我正在尝试不明智的变量声明,并得出以下观察结果。定义一个名为 的变量'let',如下所示:let let = 7;不出所料,会导致错误:SyntaxError: let is disallowed as a lexically bound name。尝试对变量 name 执行相同的操作'const',如下所示:let const = 7;导致不同的错误: SyntaxError: Unexpected token 'const'。查看规范,第13.3.1.1 节静态语义:早期错误不允许'let' 在这种类型的声明中作为变量名(没有提及'const')。这更像是一种好奇,但是幕后发生了什么,这只会被视为'let' 不允许的变量名,同时被'const' 解释为令牌?(顺便说一下,var let = 7JavaScript 在语法上似乎是正确的,同时var const = 7也会导致错误SyntaxError: Unexpected token 'const'。)
1 回答
互换的青春
TA贡献1797条经验 获得超6个赞
基本上是出于向后兼容性的原因。就像 Felix 所说的那样,const 是一个保留字——暂时是这样。
像下面这样的代码是合法的 JavaScript(松散模式),因为let
它只是一个单词:
var let = 50; console.log(let);
请注意,事实上,当添加严格模式时,let
它被保留在其中:
当以下标记出现在严格模式代码中时,也被视为 FutureReservedWords(请参阅 10.1.1)。
储备让。
有趣的是,ES3 规范中也保留了const 。
添加回答
举报
0/150
提交
取消