2012-02-20 95 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); 
}