打开 Chrome 开发者工具并输入:
var a = [];console.log(a);a.push(1);console.log(a);
你会期望它输出类似的东西
[]
[1]
但它输出
[1]
[1]
行为是相同的
var a = [];console.log(a);a[0] = 1;console.log(a);
谁能解释这种行为?
在 OS X 上运行 Chrome。在 32 位 Windows 7 上的行为相同。
编辑:无论语句是否在同一行上,行为都是相同的。我只是在一行中提供了它们,以便于测试。
推杆
var a = [];
console.log(a);
a.push(1);
console.log(a);
在一个文件中然后运行它会产生相同的行为。
编辑 x 2如果您不想制作要测试的文件, 请参阅:http : //jsfiddle.net/9N4A6/。