为什么不
显示任何语法错误,但是
做? (我在Safari上测试过)
不过我尝试过
但它有错误,似乎“let”不是一个已经定义的变量。为什么会发生这种情况?
Because var
一直是一个关键词,但是let
没有。所以添加时let
对于该语言,TC39 委员会必须对其进行指定,以便使用的现有代码let
作为标识符没有破坏。 (他们的主要规则之一是“不要破坏网络”,并且他们非常认真地对待它[谢天谢地]。)
So let
是上下文中的关键字,例如let
声明,但也可以是标识符:
let a = 42; // Keyword, due to context
let = "I'm an identifier"; // Identifier, due to context
console.log(a);
console.log(let);
请注意,在严格模式下("use strict"
), let
不能用作标识符;引入严格模式的规范也被保留let
以及在严格模式下使用时的其他一些词(请参阅ECMAScript 第五版 §7.6.1.2 http://ecma-international.org/ecma-262/5.1/#sec-7.6.1.2),因为当然在该规范采用之前不存在严格模式代码,所以他们可以做到这一点。 (它didn't保留最终成为关键字的每个单词,因此有时他们确实必须非常仔细地定义事物。例如,async
即使在严格模式下也是一个完全有效的标识符,但在之前有特殊含义function
.)
"use strict";
let = "I'm an identifier"; // SyntaxError: Unexpected strict mode reserved word
console.log(let);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)