为什么在javaScript中,let在类型转换为字符串时不被识别为关键字



javaScript中对字符串的类型转换显然忽略了let作为关键字。

String(let)抛出错误ReferenceError:let未定义

然而,String(var)抛出错误SyntaxError:意外的令牌'var'

这是预定的行为吗?

"保留关键字";不能用作标识符(变量名(。var是一个保留关键字。

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之后编写的(因此不需要担心任何向后兼容性(。

正如注释所指出的,这不是字符串插值。这只是识别有效变量/标识符名称的解析器。

最新更新