首页 > web前端 > js教程 > 正文

Console.log() 在 Google Chrome 中是否正确输出对象和数组?

Barbara Streisand
发布: 2024-10-20 12:30:02
原创
433 人浏览过

Does Console.log() Correctly Output Objects and Arrays in Google Chrome?

Console.log() 与 Google Chrome 中的对象和数组不一致

Console.log(),Google Chrome 中的调试工具,与对象和数组一起使用时表现出特殊的行为。此异常在以下情况下出现:

  1. 创建嵌套数组(例如 [[345,"test"]])。
  2. 数组记录到控制台。
  3. 内部数组值被修改,console.log() 随后显示​​修改后的值,而不是执行时数组的值。
<code class="javascript">var test = [[2345235345,"test"]]
console.log(test);
test[0][0] = 1111111;
// outputs: [[1111111,"test"]]

var testb = {};
testb.test = "test";
console.log(testb);
testb.test = "sdfgsdfg";
// outputs: {"testb":"test"}

var testc = ["test","test2"];
console.log(testc);
testc[0] = "sdxfsdf";
// outputs: ["test","test2"]</code>
登录后复制

有趣的是,这种行为Chrome 独有; Firefox 不展示它。此外,如果代码在 Chrome 调试器中逐行执行,console.log() 将显示正确的值。

现象的起源

进一步调查显示,这是一个已知错误,已在 Webkit 中解决,但尚未合并到 Google Chrome 中。该错误最初于 2010 年 3 月报告(https://bugs.webkit.org/show_bug.cgi?id=35801),并于 2012 年 8 月实施了修复。但是,它尚未进入 Chrome。

控制台状态影响

console.log() 的行为受控制台窗口状态的影响。如果加载脚本时控制台窗口打开,console.log() 将显示数组和对象的当前值。但是,如果在脚本加载后关闭并打开控制台窗口,console.log() 将显示修改后的值,即使它们在 console.log() 执行后更改。

<code class="javascript">var greetings=['hi','bye'];
console.log(greetings);
setTimeout(function(){
    greetings.push('goodbye');
},3000);</code>
登录后复制

如果上述脚本在控制台窗口已打开的情况下执行,console.log() 将显示两项。如果控制台窗口在页面加载后关闭并重新打开,console.log() 将显示三个项目,反映数组的修改状态。

此特性表明 Google Chrome 的 console.log() 功能中存在潜在错误,该问题在当前版本的 Chrome 中仍未修复。

以上是Console.log() 在 Google Chrome 中是否正确输出对象和数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!