2012-02-20 44 views
0

可能重複:
Is Chrome's JavaScript console lazy about evaluating arrays?奇怪控制檯輸出陣列和array.pop()以JavaScript功能

寫到下一個js函數:

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

當我寫在控制檯中的下一個代碼我預計下一個輸出:

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

但我發現奇怪的行爲,我(Chrome和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 2012-02-20 16:07:03

0

這是pop()預期的行爲,根據MDN pop()將:

刪除數組的最後一個元素並返回該元素。

爲了實現你的意圖,你應該嘗試

function popFromArray(arr){ 
    console.info(arr); 
    console.info(arr[arr.length -1]); 
    console.info(arr); 
}