2 回答
TA贡献1886条经验 获得超2个赞
根据7.6标识符名称和标识符中的ECMAScript规范,有效标识符定义为:
Identifier :: IdentifierName but not ReservedWordIdentifierName :: IdentifierStart IdentifierName IdentifierPart IdentifierStart :: UnicodeLetter $ _ \ UnicodeEscapeSequence IdentifierPart :: IdentifierStart UnicodeCombiningMark UnicodeDigit UnicodeConnectorPunctuation \ UnicodeEscapeSequence UnicodeLetter any character in the Unicode categories “Uppercase letter (Lu)”, “Lowercase letter (Ll)”, “Titlecase letter (Lt)”, “Modifier letter (Lm)”, “Other letter (Lo)”, or “Letter number (Nl)”. UnicodeCombiningMark any character in the Unicode categories “Non-spacing mark (Mn)” or “Combining spacing mark (Mc)” UnicodeDigit any character in the Unicode category “Decimal number (Nd)” UnicodeConnectorPunctuation any character in the Unicode category “Connector punctuation (Pc)” UnicodeEscapeSequence see 7.8.4. HexDigit :: one of 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
这为命名变量和打高尔夫球创造了很多机会。我们来试试吧。
一个有效的标识符可以与无论是开始UnicodeLetter
,$
,_
,或\ UnicodeEscapeSequence
。unicode字母是这些类别中的任何字符(请参阅所有类别):
大写字母(Lu)
小写字母(Ll)
标题字母(Lt)
修饰符(Lm)
其他字母(Lo)
字母编号(Nl)
仅这一点就解释了一些疯狂的可能性 - 工作实例。如果它在所有浏览器中都不起作用,那么称之为bug,因为它应该。
var ᾩ = "something";
var ĦĔĽĻŎ = "hello";
var 〱〱〱〱 = "less than? wtf";
var जावास्क्रिप्ट = "javascript"; // ok that's JavaScript in hindi
var KingGeorgeⅦ = "Roman numerals, awesome!";
TA贡献1804条经验 获得超3个赞
基本上,以正则表达式形式:[a-zA-Z_$][0-9a-zA-Z_$]*
。换句话说,第一个字符可以是字母或_或$,其他字符可以是字母或_或$或数字。
注意:虽然其他答案指出您可以在JavaScript标识符中使用Unicode字符,但实际问题是“我应该使用哪些字符作为扩展库的名称,如jQuery?” 这是对这个问题的回答。您可以在标识符中使用Unicode字符,但不要这样做。编码一直搞砸了。将您的公共标识符保存在安全的32-126 ASCII范围内。
添加回答
举报