2

私はJavascriptの初心者で、読んだものをできる限り試しています。

しかし、 と になるpop()push()、私が疑問に思っているいくつかの奇妙な結果が得られます。

コードは次のとおりです。

var arr = [];
arr.push(2,3);
console.log(arr);

console.log(arr.pop());
console.log(arr);

結果は次のとおりです。

【2、未定×1】

3

[2]

そうではありませんか:

[2、3]

3

[2]

4

2 に答える 2

5

これはconsole.log、ブラウザでの の非同期評価によるものです。最初の結果console.logが表示されるまでに、アイテムは のために既になくなっていますpop()

正確な結果を得るには、次のように呼び出しますtoString()

var arr = [];
arr.push(2,3);
console.log(arr.toString()); // 2,3 - as expected.

console.log(arr.pop());
console.log(arr);
于 2012-07-09T20:53:43.000 に答える
4

コンソールはオブジェクトを「ライブ」として処理することに注意する必要があります。すでにコンソールに出力したオブジェクト (配列、オブジェクトなど) は、引き続き操作の対象となります。

そのため、最初のログで期待[2,3]したときに、コードはすでに 3 をポップしていたため、undefined3 の場所で置き換えられました。

もちろん、このイベントはブラウザがコンソールをどのように実装しているかによって異なります。

于 2012-07-09T20:53:24.157 に答える