JavaScript中标识符名称中使用Unicode转义序列有什么意义?

6

JavaScript允许在标识符名称中使用Unicode转义序列...例如:

var \u0160imeVidas = "blah";

上述变量以(克罗地亚的)字母Š开头,因此变量的完整名称为“ŠimeVidas”。 现在,这很好,但有什么意义呢? 是否有任何情况下,这个功能可能是有用的?


破了?你是什么意思? 我运行了console.dir(window),ŠimeVidas变量被列为属性...它是列表中倒数第二个(最后一个是__proto__)。 - Šime Vidas
@Šime:很奇怪,全局对象在我的Chrome 5.0.375.127中无法展开以查看任何属性。 - Andy E
1
我今天更新到了6.0.472.53版本。这可能是LOL出问题的原因吗? - Šime Vidas
@Šime:我也这么认为。我还没有更新到beta版,因为我看到有一些与Stack Overflow相关的脚本问题-http://meta.stackexchange.com/questions/63067/google-chrome-repeatedly-displays-stack-overflow-works-best-with-javascript-enab。 - Andy E
@Roy Tinker,您能否将您上面的评论以答案的形式写出来,这样我就可以接受它作为这个问题的答案了吗?我会接受这个答案:“它允许任何字符串作为对象中的键”。 - Šime Vidas
显示剩余3条评论
2个回答

3

假设您有一个以UTF-8存储的库,并且作者选择在API中使用非ASCII字符。然后,假设出于某种原因,您需要从存储在ASCII中的文件中访问此库。允许在标识符中使用Unicode转义序列可以让您这样做。还可能存在其他类似的情况,但这是一个例子。


2
我能想到使用Unicode转义序列来声明变量的唯一用途是为了混淆代码。当然,你也可以输入以下内容来声明相同的变量:
var ŠimeVidas = "blah";

现在,如果您使用 Unicode 转义序列将字符串中的随机字符替换为此变量,则更难搜索并找到这些引用。当然,就像大多数其他混淆技术一样,它很容易被破解。
如果要使用未映射到 Alt+Num 组合的 Unicode 字符,可以节省在 charmap(或您的操作系统等效项)中搜索键码的时间。但不适用于节省字节。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接