可能重复:
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]
有人能解释为什么会这样吗?
答案 0 :(得分:2)
尝试跳过功能代码:它会正确报告。
我认为这只是一个并发问题。控制台输出生成与程序执行并行完成,因此结果是不可预测的。
答案 1 :(得分:0)
这是pop()
的预期行为,根据MDN pop()
将:
从数组中删除最后一个元素并返回该元素。
要实现您的意图,您应该尝试
function popFromArray(arr){
console.info(arr);
console.info(arr[arr.length -1]);
console.info(arr);
}