我很难理解以下内容:
var foo = [100, 2],
bar = foo;
bar[0] = 9;
console.log(foo[0], bar[0]); // returns => 9, 9
我理解 bar[0]
返回 9,因为它设置在那里 - 但 foo[0]
是如何返回 9,而不是返回 100?
看起来 foo
变成了 bar
,因此设置它是从右到左,而不是从左到右
最佳答案
这里 foo
和 bar
都指向内存中的同一个位置。实际数组在变量之间共享。所以,基本上他们都访问/更新同一个数组。
非原始数据类型不是按值传递,而是按引用传递。
_______ _______
| foo | --> [...] <-- | bar |
| | | |
------- -------
要复制数组,请使用slice
。
var bar = foo.slice();
关于javascript - 理解奇怪的数组返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33433573/