0

不是 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();

​</p>

4

2 回答 2

7

在某些浏览器(例如 Chrome)中,会显示阵列console.log实时交互式显示,而不是时间点快照。因此,如果您在运行后查看控制台,则它已因更改而更新。console.log当您在控制台面板中以交互方式使用 Chrome 时,与在脚本中使用它时,Chrome 所做的事情也略有不同。

如果您改为显示字符串,您将看到您所期望的:

var z = new Y;
console.log(z.my_array.join(", "));
z.changeIt();

这显示了您期望的时间点快照。

于 2012-11-05T12:20:08.783 回答
0

它对我有用:http: //jsfiddle.net/LyhgW/

编辑:我正在使用的事实alert使此代码有效。这适用于控制台中 Chrome 的实时功能,而是显示快照。

于 2012-11-05T12:23:07.183 回答