javascript - Google Chrome console.log 乱序?

标签 javascript google-chrome console shift

<分区>

有人可以解释以下两个输出吗?

代码 1:

console.log(itemsAry);
//loadNextItem();
function loadNextItem(){
    var item = itemsAry.shift();
    console.log(item);
}

结果:

["cat-53", "cat-57", "cat-51", "cat-10", "cat-55", "cat-56", "cat-5", "cat-50", "cat-3", "cat-54", "cat-52", "cat-9", "cat-8", "cat-4", "cat-58", "cat-6", "cat-7"]

(如预期)。

代码 2:

console.log(itemsAry);
loadNextItem();
function loadNextItem(){
    var item = itemsAry.shift();
    console.log(item);
}

结果:

["cat-57", "cat-51", "cat-10", "cat-55", "cat-56", "cat-5", "cat-50", "cat-3", "cat-54", "cat-52", "cat-9", "cat-8", "cat-4", "cat-58", "cat-6", "cat-7"]

cat-53

请注意,cat-53 已从原始数组 PRIOR 转移到 console.log() 输出,该输出应该在 shift 操作之前发生地方。这怎么可能?或者我错过了什么?

编辑:情况变得更糟:

console.log(itemsAry);
loadNextItem(); loadNextItem(); loadNextItem(); loadNextItem();
function loadNextItem(){
    var item = itemsAry.shift();
    console.log(item);
    console.log(itemsAry);
}

结果:

["cat-55", "cat-56", "cat-5", "cat-50", "cat-3", "cat-54", "cat-52", "cat-9", "cat-8", "cat-4", "cat-58", "cat-6", "cat-7"]
cat-53
["cat-55", "cat-56", "cat-5", "cat-50", "cat-3", "cat-54", "cat-52", "cat-9", "cat-8", "cat-4", "cat-58", "cat-6", "cat-7"]
cat-57
["cat-55", "cat-56", "cat-5", "cat-50", "cat-3", "cat-54", "cat-52", "cat-9", "cat-8", "cat-4", "cat-58", "cat-6", "cat-7"]
cat-51
["cat-55", "cat-56", "cat-5", "cat-50", "cat-3", "cat-54", "cat-52", "cat-9", "cat-8", "cat-4", "cat-58", "cat-6", "cat-7"]
cat-10

在 FireFox 中测试后,这似乎是 Google Chrome 的问题。 FF 输出:

["cat-53", "cat-57", "cat-51", "cat-10", "cat-55", "cat-56", "cat-5", "cat-50", "cat-3", "cat-54", "cat-52", "cat-9", "cat-8", "cat-4", "cat-58", "cat-6", "cat-7"]
cat-53
["cat-57", "cat-51", "cat-10", "cat-55", "cat-56", "cat-5", "cat-50", "cat-3", "cat-54", "cat-52", "cat-9", "cat-8", "cat-4", "cat-58", "cat-6", "cat-7"]
cat-57
["cat-51", "cat-10", "cat-55", "cat-56", "cat-5", "cat-50", "cat-3", "cat-54", "cat-52", "cat-9", "cat-8", "cat-4", "cat-58", "cat-6", "cat-7"]
cat-51
["cat-10", "cat-55", "cat-56", "cat-5", "cat-50", "cat-3", "cat-54", "cat-52", "cat-9", "cat-8", "cat-4", "cat-58", "cat-6", "cat-7"]
cat-10
["cat-55", "cat-56", "cat-5", "cat-50", "cat-3", "cat-54", "cat-52", "cat-9", "cat-8", "cat-4", "cat-58", "cat-6", "cat-7"]

按预期输出...

最佳答案

我认为您使用的是 Chrome 浏览器吗? Firebug 不会这样做(我刚刚检查过 - FF8.0、FB 1.8.4)但 Chrome 16 会。

我认为在 Chrome 中,console.log() 是异步执行的,以免中断您的代码或其他事情;实际上,所有 console.log()s 在调用它们的代码完成运行后立即发生。

编辑:诅咒,忍者!

关于javascript - Google Chrome console.log 乱序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8138248/

相关文章:

ruby-on-rails - Hirb 不起作用

javascript - 尝试将一个JavaScript事件链接到另一个

javascript - touchstart 和 touchend 事件不适用于钛的 TableView (Android)

javascript - Gmail 的 html 电子邮件中表格的内联样式并使用 PHPMailer 发送

database - 苏 postgres : Sorry?

java - slf4j/log4j : disabling console output when console is inappropriate

javascript - 如何删除尾随空格而不是字符串中的空格(也不是开头的空格)?

css - 为什么 chrome 要给 h* 元素添加特定的属性?

javascript - 如何从主选项卡在新选项卡上运行功能? (谷歌浏览器)

javascript - 让 Promise 等待 Chrome.runtime.sendMessage