Console.log() 与 Google Chrome 中的对象和数组不一致
Console.log(),Google Chrome 中的调试工具,与对象和数组一起使用时表现出特殊的行为。此异常在以下情况下出现:
<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中文网其他相关文章!