不是js专家所以这可能是一个愚蠢的问题,但是......
为什么日志显示数组已更改?我期待数组仍然是[0,0],因为在console.log之后调用该方法。另外,如果我尝试像这样替换整个数组:
this.my_array = [1,0];
日志仍会显示[0,0],这对我来说更有意义。 发生了什么事?
function Y() {
this.my_array = [0,0];
this.changeIt = function() {
this.my_array[0] = 1;
};
}
var z = new Y;
console.log(z.my_array);
z.changeIt();
答案 0 :(得分:7)
在某些浏览器中(例如,Chrome)console.log
会显示阵列的 live ,交互式显示,而不是时间点快照。因此,如果您在运行后查看控制台,则会因更改而更新。当您在控制台面板中以交互方式使用console.log
时,Chrome在脚本中的使用时间略有不同。
如果您显示字符串,则会看到您的期望:
var z = new Y;
console.log(z.my_array.join(", "));
z.changeIt();
显示您期望的时间点快照。
答案 1 :(得分:0)
它对我有用:http://jsfiddle.net/LyhgW/
编辑:我正在使用alert
的事实使这段代码有效。这适用于Chrome在控制台中的实时功能,而是显示快照。