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

为何对undefined赋值不会抛出Invalid left-hand assignment错误?

为什么给undefined赋值不会抛出“Invalid left-hand assignment”错误?

你遇到的这个情况是Node.js REPL(交互终端)的特殊行为,和常规JS执行环境不一样:

  • 在浏览器全局作用域或者Node.js的普通脚本文件里,undefined是全局对象(globalThis)的不可写、不可配置属性,严格模式下强行赋值会直接报错,非严格模式也会静默失败,根本改不了它的值。
  • 但Node.js的REPL每执行一行代码,都会被自动包裹在一个类似函数的包装器里,这里的undefined是作为函数的形参存在的——形参本质是局部变量,没有被标记为只读,所以你可以随便给它赋值,自然不会触发“左侧赋值无效”的错误。

简单来说,REPL里的undefined不是那个全局的只读属性,而是个普通局部变量。你要是写个.js文件,把undefined = 'asdf'放进去用Node运行,严格模式下照样会报错,和浏览器表现一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 15:57:01