奇怪控制台输出阵列和array.pop()以JavaScript功能
问题描述:
可能重复:
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]
是否有人可以解释为什么会发生?
答
尝试跨越功能代码:它会正确报告。
我认为这只是一个并发问题。控制台输出生成与程序执行并行完成,因此结果不可预知。
答
这是pop()
预期的行为,根据MDN pop()
将:
删除数组的最后一个元素并返回该元素。
为了实现你的意图,你应该尝试
function popFromArray(arr){
console.info(arr);
console.info(arr[arr.length -1]);
console.info(arr);
}
样子真:) – tbicr 2012-02-20 16:07:03