javascript - 理解奇怪的数组返回

标签 javascript arrays

我很难理解以下内容:

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,因此设置它是从右到左,而不是从左到右

最佳答案

这里 foobar 都指向内存中的同一个位置。实际数组在变量之间共享。所以,基本上他们都访问/更新同一个数组。

非原始数据类型不是按值传递,而是按引用传递。

_______                _______
| foo | --> [...] <--  | bar |
|     |                |     |
-------                -------

要复制数组,请使用slice

var bar = foo.slice();

关于javascript - 理解奇怪的数组返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33433573/

相关文章:

javascript - 单击多个按钮后,如何更改使用 <button> 标签创建的按钮的文本?

javascript - 如何使用 JavaScript 解析值?

arrays - 递归无单位元素类型

javascript - 如何对数组中的多个元素重新排序?

javascript - 如何通过右键单击它来获取 Div Id

javascript - 如何更改 JavaScript 中的最后一个文本节点子节点

c - 指针运算和数组 : what's really legal?

c - 添加数组时出现段错误(核心转储)

javascript - Javascript 前端与 C 后端的性能

javascript - 传递 model.find 作为要调用的参数会导致错误