【发布时间】:2015-07-21 09:42:38
【问题描述】:
假设我们从这个开始:
var foo = {n:1};
var bar = foo;
在 JavaScript 中,下列赋值的执行顺序是什么:
foo.x = foo = {n:2};
当我查找此问题的答案时,我发现了几个似乎表明作业是从右到左发生的,例如:
foo = {n:2};
foo.x = foo;
在这种情况下,我们期望:
console.log(foo) //{n:2, x:Object} - (a circular reference back to foo)
但是,当我实际执行此操作时,我在控制台中看到的内容表明分配实际上是从左到右发生的:
console.log(foo) //{n:2}
console.log(bar) //{n:1, x:Object}
--> {n:1} obj 获得一个 'x' 属性,而 foo 被重新分配给一个新对象 {n:2}
当一行中有多个分配时,有人可以为我澄清操作顺序吗?
此外,将上述情况与以下情况区分开来的基本规则是什么: Multiple variable assignments in one row
上述问题中的一些答案声称原语的分配是从右到左进行的......
【问题讨论】:
标签: javascript var