当我运行此代码时:
var a = ['a','b','c'];
var b = ['a','b','c'];
for(i = 0; i <= a.length-1; i++){
b.shift();
console.log(b);
}
我期待这个输出:
['b','c']
['c']
[]
但我得到了这个输出:
[]
[]
[]
为什么?
我如何获得预期的输出?
答案 0 :(得分:8)
这是known problem in Chrome。这是因为console.log
没有复制你想要显示的内容,它只是存储引用。
由于日志未立即更新,但是一旦您的功能结束并且浏览器更新了用户界面,日志将显示b
变量的当前状态,而不是每个{{1}时的状态打电话。
要获得所需的输出,您必须为每个console.log
电话制作变量状态的Flash副本:
console.log
答案 1 :(得分:1)
这是在执行语句时未打印console.log
语句的副作用。请注意,如果您将console.log
替换为alert
,则代码将按预期运行。
答案 2 :(得分:0)
或者根据我对Javascript Funky array mishap
的回答将log参数更改为表达式console.log ('' + b);