0

jsの専門家ではないので、これはばかげた質問かもしれませんが...

アレイが変更されたことがログに表示されるのはなぜですか?メソッドはconsole.logの後に呼び出されるため、配列はまだ[0,0]であると予想していました。また、次のように配列全体を置き換えようとすると、次のようになります。

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では、ポイントインタイムスナップショットではなく、アレイのライブのインタラクティブな表示が表示されます。したがって、これを実行した後にコンソールを表示している場合は、変更のために更新されています。Chromeconsole.logは、コンソールパネルでインタラクティブに使用する場合と、スクリプト内から使用する場合とでは、わずかに異なる動作をします。

代わりに文字列を表示すると、期待どおりの結果が得られます。

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 に答える