You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 04:25:35