Javascript unicode转义在let关键字中有效吗
在Javascript unicode转义在let关键字中有效吗,javascript,ecmascript-6,language-lawyer,Javascript,Ecmascript 6,Language Lawyer,在let关键字中使用unicode转义序列有效吗 重新启动:以下代码有效吗 l\u0065t a = 1; 是否等同于此代码: let a = 1; 否 ECMAScript确实允许字符串文本、模板文本和正则表达式文本中的Unicode转义序列(到目前为止是预期的),以及()。然而,它不允许它们出现在1中,因此它们不能形成诸如关键字、其他标记和空格之类的内容 (自ES5以来,这一点没有改变。您也不允许,并且将继续不允许,在var中使用转义序列) 1:当然,我们可以想象一个解释任何东西(包括转
let
关键字中使用unicode转义序列有效吗
重新启动:以下代码有效吗
l\u0065t a = 1;
是否等同于此代码:
let a = 1;
否
ECMAScript确实允许字符串文本、模板文本和正则表达式文本中的Unicode转义序列(到目前为止是预期的),以及()。然而,它不允许它们出现在1中,因此它们不能形成诸如关键字、其他标记和空格之类的内容
(自ES5以来,这一点没有改变。您也不允许,并且将继续不允许,在var
中使用转义序列)
1:当然,我们可以想象一个解释任何东西(包括转义字符)的实现来派生源文本2,但这将是a)奇怪的,b)超出ECMAScript的范围。考虑通过JSON.parse
和eval
传递一个字符串-这样的字符串也可能包含l\u0065t
2:像这样的一个实际例子(实际上是有意义的)是
标记中的HTML实体。为什么不试试呢?@PedroLobito这是一个语言律师的问题。实现可能是错误的。该标准在这方面似乎有点含糊不清let
不在保留字语法中。google chrome中的V8说它是无效的。如果你在Firefox中尝试这个,你会得到SyntaxError:关键字必须按字面意思写,没有嵌入转义符
我会把你的例子改成ES5中不是保留字的东西。该标准明确规定,保留字中不允许使用转义序列。@programmerjake:是吗?我错过了,你能指给我看吗?见11.6.2@Programmer中的注释杰克:哦,对了,我看了。在我看来,所有的标记都必须是各自源字符的文字序列是隐含的。@programmerjake:这就提出了一个问题,var v\u0061r
是否有效,如果v\u0061r
严格来说不是标识符中禁止的保留字:-),我想它们实际上意味着标识符的字符串值中不允许保留字。