[英]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.