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

标签 javascript firefox browser

几分钟前,在玩 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)

enter image description here

谁能解释一下为什么会这样?

最佳答案

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

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 完成执行)。

不错的发现...绝对可以吸引开发人员。

关于javascript - Firefox 37 上 console.log() 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29528410/

相关文章:

JavaScript 属性访问 : dot notation vs. 括号?

firefox - Angular xhr 请求在 Firefox 中导致重定向警告

JavaScript - 检测浏览器停止按钮点击

javascript - 当页面完全加载到 TChromium DCEF3 (Delphi) 中时?

javascript - 使用javascript从div中的pdf对象提取并添加链接?

javascript - 使用 Javascript/Jquery 滚动到页面上的特定位置

javascript - Chrome : Inspect elements that appear only when dragging

firefox - 如何在我的 Firefox/Chrome 扩展程序中使用 AdSense? (反正有吗?)

javascript - 在设置中打开自定义页面点击,firefox addon SDK

C# - 在 WebBrowser 控件中捕获 CTRL 鼠标滚轮