变量赋值如何在JavaScript中工作?
所以我前几天正在玩,只是为了确切了解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将字符串和整数等原语与哈希处理不同。哈希返回指针,而“核心”原语返回自己的副本)
开满天机
相关分类