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

ECMAScript规范未提及传值/传引用,对象赋值能否按值拷贝?

ECMAScript对象赋值与规范实现的说明

ECMAScript规范确实没提“按值传递”“按引用传递”这类术语,它的赋值逻辑核心是赋值值——但要注意:对于对象类型来说,这里的“值”是指向对象的引用(内存地址的抽象),而非对象本身的拷贝。

你问符合规范的实现能不能按值拷贝对象?答案是绝对不行,原因在于规范对对象赋值后的行为有明确约束:

  • 执行let obj1 = {x:1}; let obj2 = obj1;后,修改obj2.x = 2,规范要求obj1.x必须同步变为2。
  • 如果实现采用值拷贝对象的方式,修改obj2不会影响obj1,这直接违反了规范规定的行为,属于不符合标准的实现。

规范里的赋值逻辑,处理对象时就是把对象的引用值赋给变量,所有合规的JS实现都必须遵守这个行为逻辑,不能自作主张改成拷贝对象本体——不然整个语言的基本行为一致性就会被破坏。

另外提一句,Emacs文档和这个问题完全不相关,它是编辑器的文档,本来就不会包含ECMAScript规范的细节,这类问题得以ECMAScript官方的行为约束为准。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 10:47:42