数组值未按方法更改

时间:2012-11-05 12:13:45

标签: javascript

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

2 个答案:

答案 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在控制台中的实时功能,而是显示快照。