更新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任何人都可以解释为什么在我对它进行任何更改之前,数组的值会发生变化吗?
谢谢