簡體   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