为什么不呢
显示任何语法错误但
呢?(我在Safari上测试)
但是我试过了
console.log(let)Run Code Online (Sandbox Code Playgroud)
但它有错误,似乎'let'不是已定义的变量.为什么会这样?
T.J*_*der 36
因为var一直是关键词,但却let没有.因此,当添加let到语言时,TC39委员会必须指定它,以便用作let标识符的现有代码不会中断.(他们的主要规则之一是"不要破坏网络",他们非常重视[谢天谢地].)
let上下文中的关键字也是如此,例如let声明,但也可以是标识符:
let a = 42; // Keyword, due to context
let = "I'm an identifier"; // Identifier, due to context
console.log(a);
console.log(let);Run Code Online (Sandbox Code Playgroud)
注意在strict mode("use strict")中,let不能用作标识符; 在严格模式下let使用时引入严格模式的规范也保留了以及其他几个词(参见ECMAScript第5版§7.6.1.2),因为在该规范采用之前,当然没有严格模式代码存在,所以他们可以去做.(它没有保留最后成为关键字的每个单词,所以有时它们确实必须非常仔细地定义事物.例如,async即使在严格模式下,它也是一个完全有效的标识符,但在之前具有特殊含义function.)
"use strict";
let = "I'm an identifier"; // SyntaxError: Unexpected strict mode reserved word
console.log(let);Run Code Online (Sandbox Code Playgroud)