在let
关键字中使用的unicode转义序列是否有效?
重申:以下代码是否有效?
l\u0065t a = 1;
它是否等同于此代码:
let a = 1;
答案 0 :(得分:3)
否强>
ECMAScript允许在字符串文字,模板文字和正则表达式文字(迄今为止如此期望)和even in identifier names(more details)中使用Unicode转义序列。但它不允许在raw source text 1 中使用它们,因此它们不能形成诸如关键字,其他标记和空格之类的内容。
(自ES5以来,这一点没有改变。你也不允许,并且继续被允许在var
中使用转义序列。)
1:当然可以想象一个实现可以解释任何东西,包括转义字符,来派生源文本 2 ,但这可能是a)怪异而且b)在范围之外ECMAScript。考虑通过JSON.parse
和eval
传递字符串 - 这样的字符串也可能包含l\u0065t
。
2:类似这样的实际例子(它实际上有意义)是<script>
标签中的HTML实体。