繁体   English   中英

Firefox 37上console.log()的奇怪行为

[英]Strange behaviour of console.log() on Firefox 37

几分钟前,在玩javascript时,我注意到console.log()一个奇怪的行为。 实际上它似乎记录了“扭曲”的变量。 看看以下内容:

 var res = document.getElementById("res"); var arr = ["1", "2", "3"]; arr.push("4"); res.innerHTML = JSON.stringify(arr)+'<br>'; console.log(arr); arr.push("5"); res.innerHTML += JSON.stringify(arr); console.log(arr); 
 <div id="res"></div> 

它将正确的变量打印到#res但不打印到浏览器控制台中(Firefox 37)

在此输入图像描述

有人能解释我为什么会这样吗?

因此,如果您更改日志记录以便获取数组的副本:

 var arr = ["1", "2", "3"]; arr.push("4"); console.log(arr.slice()); arr.push("5"); console.log(arr.slice()); 

一切都按预期工作。

我将“实时”跟踪作为一种可能性进行折扣,因为下面的示例没有显示任何实时跟踪的证据:

 var arr = ["1", "2", "3"]; console.log(arr); var i; i = setInterval(function(){ arr.push(1); console.log(arr); if(arr.length>10)clearInterval(i) },1000); 

这意味着日志记录已排队,并且队列在最后一次推送到数组之后才会运行(可能直到您的javascript完成执行)。

很好找......绝对可能会让开发人员感到惊讶。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM