【发布时间】:2010-10-05 07:21:01
【问题描述】:
所以前几天我一直在玩,只是想看看 JavaScript 中批量赋值是如何工作的。
首先我在控制台中尝试了这个例子:
a = b = {};
a.foo = 'bar';
console.log(b.foo);
结果是“条”显示在警报中。这很公平,a 和b 实际上只是同一个对象的别名。然后我想,我怎样才能让这个例子更简单。
a = b = 'foo';
a = 'bar';
console.log(b);
这几乎是一回事,不是吗?好吧,这一次,它返回 foo 而不是 bar,正如我对第一个示例的行为所期望的那样。
为什么会这样?
注意可以使用以下代码进一步简化此示例:
a = {};
b = a;
a.foo = 'bar';
console.log(b.foo);
a = 'foo';
b = a;
a = 'bar';
console.log(b);
(我怀疑 JavaScript 对字符串和整数等原语的处理与散列不同。散列返回一个指针,而“核心”原语返回其自身的副本)
【问题讨论】:
-
在这里解释分配:syntaxsuccess.com/viewarticle/…
标签: javascript