奇怪的控制台输出数组和javascript函数中的array.pop()

时间:2012-02-20 06:32:00

标签: javascript arrays console pop

  

可能重复:
  Is Chrome's JavaScript console lazy about evaluating arrays?

我写下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 :(得分:2)

尝试跳过功能代码:它会正确报告。

我认为这只是一个并发问题。控制台输出生成与程序执行并行完成,因此结果是不可预测的。

答案 1 :(得分:0)

这是pop()的预期行为,根据MDN pop()将:

  

从数组中删除最后一个元素并返回该元素。

要实现您的意图,您应该尝试

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