因此,前几天我在玩,目的是确切地了解批量分配在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与哈希将对字符串和整数之类的基元的处理方式不同。哈希返回一个指针,而“核心”基元返回其自身的副本)