为何JavaScript中const是保留关键字而let却不是?
JavaScript中
let/async与const作为变量名的差异原因 在非严格模式下,你可以写出var let = 0, async = 1, await = 2;这样的合法代码,但如果尝试var const = 0;就会立刻抛出语法错误——这背后的核心差异在于这些关键字的保留规则不同。
为什么let、async、await能当变量名?
ES6及之后新增的语法特性,都遵循向后兼容的设计原则。为了不破坏旧代码,这些新关键字被设计成「受限保留关键字」:只有在特定的语法语境里(比如let声明变量、async定义函数时)才会被识别为关键字,在普通的变量声明场景(比如非严格模式下的var声明)中,它们依然可以被当作普通变量名使用。
为什么const不行?
const是个特殊情况:早在ES3版本的规范里,它就被列入了保留关键字列表,当时只是为未来的语法特性预留位置,并没有实际的语法功能。等到ES6正式引入const声明变量的特性时,它已经是被长期保留的关键字了,所以无论在严格模式还是非严格模式下,都不能把const用作变量名。
示例代码
var let = 100; // 正常执行,无报错 var const = 100; // 语法错误:Cannot use the keyword 'const' as a variable name.
内容的提问来源于stack exchange,提问作者pzmarzly
相关产品推荐
相关产品推荐

