所以前几天我玩了一会儿,就是为了看看 JavaScript 中的大量赋值是如何工作的。
首先,我在控制台中尝试了这个例子:
a = b = {};
a.foo = 'bar';
console.log(b.foo);
结果是“ bar”显示在警报中。这很公平,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 对字符串和整数等原语的处理方式不同于散列。散列返回一个指针,而“ core”原语返回它们自己的一个副本)