繁体   English   中英

FireBug的console.log()和console.debug()有什么区别?

[英]What's the difference between FireBug's console.log() and console.debug()?

一个非常简单的代码来说明差异。

var x = [0, 3, 1, 2];
console.debug('debug', x);
console.log('log', x);
// above display the same result
x.splice(1, 2);
// below display kind of a different result
console.debug('debug', x);
console.log('log', x);

alt text http://sixbytesunder.com/stuff/firebug_console.png

javascript值完全相同,但console.log()显示它与应用splice()方法之前有点不同。 因为这个我失去了几个小时,因为我认为拼接是有趣的使我的阵列多维或其他东西。

我只是想知道为什么这样的工作。 有人知道吗? :)

如果你查看文档, 它会说

控制台知道四种不同类型的消息,如下所述[...]

有关不同命令的更多信息,另请参阅Console API。

该页面上的外观显示console.log

如果记录了对象,它们将不是作为静态文本编写,而是作为交互式超链接编写,可以单击以检查Firebug的HTML,CSS,脚本或DOM选项卡中的对象。

所以,我认为在splice之前,数组在内部仍然是一个数组 (我知道,它一种对象),但是在操作之后,你得到一个通用对象,至少在内部。 我知道这是一个很弱的解释,但Firebug在控制台中有更奇怪的行为。

BTW, ECMAScript规范没有任何用处,但我们可以在关于Array.prototype.splice (第15.4.4.12节)的部分中阅读:

splice功能是有意通用的; 它不要求它的this值是一个Array对象。 因此,它可以转移到其他类型的对象以用作方法。 splice函数是否可以成功应用于宿主对象是依赖于实现的。

在Firebug 1.6a12中我得到了

debug [0, 3, 1, 2]  blog.php (line 80)
log [0, 3, 1, 2]
debug [0, 2]        blog.php (line 85)
log [0, 2]

debug()行包含指向console.debug()行的源代码行的链接。

暂无
暂无

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

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