如何在循环内使用shift?

时间:2011-12-26 12:10:19

标签: javascript

当我运行此代码时:

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']
[]

但我得到了这个输出:

[]
[]
[]

为什么?

我如何获得预期的输出?

3 个答案:

答案 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);