我注意到在InternetExplorer中(但不幸的是,在我测试的其他浏览器中没有),可以使用一些Unicode变量名。这让我大开眼界,我非常高兴我能写出这样有趣的Unicode代码:
变量草泥马 = “你这匹脏马。”,
快乐的☺N☺小地毯☺P☺eia=“:)耶!”,
ಠ_ಠ = “表情符号”;
警惕草泥马 + 快乐的☺N☺小地毯☺P☺环境影响评估+ಠ_ಠ);
但出于某种原因,◎ܫ◎,♨_♨和☺不是有效的变量名
为什么ಠ_ಠ和草泥马工作,但◎ܫ◎,♨_♨和☺不要
编辑:在JSFIDLE上的浏览器中进行测试。我已经在Internet Explorer 9、Chrome、Firefox和Opera中进行了测试。到目前为止,它似乎只在Internet Explorer 9中工作(我不知道Internet Explorer 8及以下版本)。如果它在其他浏览器中工作,请告诉我
ಠ_ಠ
和草泥马 仅包含实际字母表中使用的“字母”;即,ಠ
是卡纳达字母表中的符号,以及草泥马 由汉字组成
◎ 和☺, 然而,它们是纯粹的符号;它们与任何字母表都没有关联
ECMAScript标准第7.6章(除Internet Explorer外的所有浏览器都遵循该标准)规定,标识符必须以以下之一开头
- Unicode字母
$或\uu\后跟unicode转义序列
标识符的以下字符必须是以下字符之一
- 开头允许的任何字符
- Unicode组合标记
- Unicode数字
- Unicode连接器标点符号
- 零宽度非连接件
- 零宽度细木工
IE超出了标准,允许使用某些符号,例如☺.
根据ECMAScript 5.1和Unicode 6.1,有一个工具可以告诉您输入的任何字符串是否是有效的JavaScript变量名