为什么let在javaScript中类型转换为字符串时不被识别为关键字?
Why is let not recognised as a keyword in type conversion to string in javaScript?
javaScript 中的字符串类型转换显然忽略了 let 作为关键字。
String(let)
抛出错误 ReferenceError: let is not defined
然而,String(var)
抛出错误 SyntaxError: Unexpected token 'var'
这是预期的行为吗?
“保留关键字”不能用作标识符(变量名)。 var
is a reserved keyword.
let
不是保留关键字,因为这会破坏向后兼容性:在没有考虑 ES6 的情况下编写的古代脚本碰巧使用 let
作为变量名会失败(浏览器会尝试 不破坏向后兼容性
- 查看该问题以获得详细解释)。
因此使用 String(var)
会引发 语法 错误,但在语法上允许使用 let
- 直到您尝试引用它(此时会抛出错误,因为不存在名为 let
的变量。
出于完全相同的原因,可以定义名为 let
的变量,但不能定义名为 var
:
的变量
var let = 123;
console.log(String(let));
var var = 123;
console.log(String(var));
此外,let
不能在严格模式下声明为标识符:
'use strict';
var let = 123;
console.log(String(let));
这是可能的,因为如果使用严格模式,运行 的代码保证是在 ES5 之后编写的(因此无需担心任何向后兼容性)。
作为注释,这是 。这只是识别有效 variable/identifier 名称的解析器。
javaScript 中的字符串类型转换显然忽略了 let 作为关键字。
String(let)
抛出错误 ReferenceError: let is not defined
然而,String(var)
抛出错误 SyntaxError: Unexpected token 'var'
这是预期的行为吗?
“保留关键字”不能用作标识符(变量名)。 var
is a reserved keyword.
let
不是保留关键字,因为这会破坏向后兼容性:在没有考虑 ES6 的情况下编写的古代脚本碰巧使用 let
作为变量名会失败(浏览器会尝试
- 查看该问题以获得详细解释)。
因此使用 String(var)
会引发 语法 错误,但在语法上允许使用 let
- 直到您尝试引用它(此时会抛出错误,因为不存在名为 let
的变量。
出于完全相同的原因,可以定义名为 let
的变量,但不能定义名为 var
:
var let = 123;
console.log(String(let));
var var = 123;
console.log(String(var));
此外,let
不能在严格模式下声明为标识符:
'use strict';
var let = 123;
console.log(String(let));
这是可能的,因为如果使用严格模式,运行 的代码保证是在 ES5 之后编写的(因此无需担心任何向后兼容性)。
作为注释,这是