即使在更改之前,数组的值也已更改

时间:2014-05-19 09:06:11

标签: javascript

更新2

我在Chrome中进行了另一项测试(最新版本),它没有遇到此问题。所以我想它已在Chrome中修复,但在Firefox中成为一个问题。有趣的:)


更新

我在几小时前更新的Firefox中进行了测试。(所以它不是关于Chrome中的懒惰评估)


我一直在寻找JavaScript是一种传递引用还是按值传递的语言,从这里得到了答案 Is JavaScript a pass-by-reference or pass-by-value language?

然后我做了一个测试,结果令我感到惊讶:

var array = [1,2,3,4,5,6,7,8];

console.log(array);

change(array);
console.log(array);
function change(a)
{
    var t = a[a.length -1] + 10;
    var ta = a;
    console.log('ta = '+ ta);
    ta.push(t);
      console.log('ta1 = '+ ta);
}

结果是:

[1, 2, 3, 4, 5, 6, 7, 8, 18] 
"ta = 1,2,3,4,5,6,7,8" 
"ta1 = 1,2,3,4,5,6,7,8,18" 
[1, 2, 3, 4, 5, 6, 7, 8, 18]

你可以在http://jsfiddle.net/hm9KN/

找到它的jsfiddle

任何人都可以解释为什么在我对它进行任何更改之前,数组的值会发生变化吗?

谢谢

0 个答案:

没有答案