2012-02-20 13 views
0

可能性の重複:私は書き込み奇妙コンソール出力アレイとJavaScript関数に()array.pop

function popFromArray(arr){ 
    console.info(arr); 
    console.info(arr.pop()); 
    console.info(arr); 
} 


Is Chrome's JavaScript console lazy about evaluating arrays?

私は次のJS関数を書きますコンソールの次のコードは次の出力を期待しました:

>>> popFromArray([12, 432, 52, 523]); 
[12, 432, 52, 523] 
523 
[12, 432, 52] 

しかし、私は私のために奇妙な行動(クロームとFirefoxを)見つけ:

>>> q = [12, 432, 52, 523]; 

>>> popFromArray(q); 
[12, 432, 52, 523] 
523 
[12, 432, 52, 523] 

>>> popFromArray(q); 
[12, 432, 52] 
523 
[12, 432, 52] 

>>> popFromArray(q); 
[12, 432] 
52 
[12, 432] 

は、それがなぜ起こるか誰も説明できますか?

答えて

2

機能コードをステップオーバーしようとすると、正しくレポートされます。

私はそれが単なる同時実行性の問題だと思います。コンソール出力の生成は、プログラムの実行と並行して行われるので、結果は予測できません。

+0

を見てみてください:) – tbicr

0

これはMDN pop()意志に従って、pop()の意図された動作である:

は配列から最後の要素を削除して、その要素を返します。

あなたの意図を実現するために、あなたは本当のような

function popFromArray(arr){ 
    console.info(arr); 
    console.info(arr[arr.length -1]); 
    console.info(arr); 
} 
関連する問題