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

为何在JavaScript中执行let = 13不会报错?(Chrome控制台+Node.js)

为什么let = 13不报错,但其他关键字如const/var会报错?

这个现象本质是ECMAScript规范为向后兼容做的特殊处理,核心原因如下:

  1. 关键字的分类差异

    • var和const属于严格保留字:无论严格模式还是非严格模式,任何语法场景下都不能将它们当作标识符(变量名)使用。所以var = 13或const = 13会直接触发语法错误——引擎会将它们识别为关键字,而非合法变量名。
    • let属于受限保留字:ES6引入let之前,已有不少旧代码把let当作普通变量名(比如var let = 10;)。为兼容这类代码,规范做了妥协:
      • 在声明语句中(比如let let = 13、const let = 123),let会被当作关键字,禁止作为变量名,因此报错。
      • 在非声明的赋值/表达式场景(比如let = 13、++let)且处于非严格模式时,let可被当作全局标识符使用,引擎不会将它识别为关键字,因此不会报错。
  2. 严格模式的约束
    如果开启严格模式(代码顶部添加'use strict';),let = 13也会触发语法错误——严格模式下会严格限制所有保留字的使用,不允许将let当作标识符。

验证示例:

'use strict';
let = 13; // Uncaught SyntaxError: Unexpected token '='

简单总结:这是ES6为兼容旧代码给let开的非严格模式特例,而var、const没有这类兼容需求,属于严格保留字。

内容的提问来源于stack exchange,提问作者Mohammed Saeid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 20:39:21