【发布时间】:2014-09-17 12:09:01
【问题描述】:
这是那些琐碎的小问题之一,还没有给我带来任何问题还(我越想越令人惊讶)但以任何方式困扰着我,我不能似乎在其他任何地方都能找到足够的答案。
假设我有两个例子
示例 1
var foo = [1,2],
bar = foo;
bar[0] = 9;
console.log(foo, bar);
这将输出 [9,2] [9,2]。
示例 2
var foo = [1,2],
bar = [1,2];
bar[0] = 9;
console.log(foo, bar);
这将输出 [1,2] [9,2]。
从技术角度来看,示例 1 和 示例 2 之间有什么区别?
在示例一中,您似乎将 bar 初始化为 foo 的值,但仅更改了 bar 的值。为什么 示例 1 中的 bar[0] = 9 也会改变存储在 foo 中的值?
另一方面,如果我想这样做。假设我在运行时无法知道 foo 的值是什么,但想将 bar 初始化为与 foo 相同的值,然后更改 bar 的值,并且只更改 bar 我该怎么做?
【问题讨论】: