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