JS中的console對象

在調試 JS 代碼時,我們大多人傾向於使用 alert() 或者 console.log() 方法來輸出信息,正如某些 Java 程序員喜歡在調試代碼時使用System.out.println() 輸出信息一樣。但與 Java 輸出不一樣的是, console 對象擁有多種方法可以更好的呈現信息,從而給代碼調試帶來方便。根據常用程度,列出以下幾種 console 對象的方法:

console.log()

console.debug()、http://console.info()、console.warn() 與 console.error()

console.table()

console.time() 與 console.timeEnd()

console.assert()

console.count()

console.group、console.groupEnd() 與 console.groupCollapsed()

console.dir()

1console.log()

先來談談我們最熟悉也最常用的 console.log() 方法。

我們最常用的做法是通過它來輸出一個變量或者輸出一個字符串。比如下面:


運行結果如下:


但我們也可以這樣用 console.log() :

 

控制檯會輸出:

 

代碼片段 1 顯示,console.log() 的參數可以有多個,輸出的結果以一個空格隔開。

代碼片段 2 顯示,console.log() 可以使用 C 語言 printf() 風格的佔位符,不過其支持的佔位符種類較少,只支持字符串(%s)、整數(%d或%i)、浮點數(%f)和對象(%o)。

 

2console.debug()、console.info()、 console.warn() 與 console.error()

這四個方法的使用方法跟 console.log() 一模一樣,差別在於輸出的顏色與圖標不同。下面是示例:

 

運行結果如下:

 

3console.table()

我們看下面一個變量:

 

我們用 console.log() 將之在 Chrome 的控制檯中輸出:

 

再用 console.table() 輸出:

 

所以從上面兩種輸出我們可以看出,當輸出類似於這種兩層嵌套的對象時,我們可以選擇 console.table() 以表格的形式輸出。當然,嵌套三層及以上的也會以表格形式輸出,但限於表格只能顯示二維信息的特點,其會在嵌套三層或以上的地方會顯示 "Object" 字符串。

 

4console.time() 與 console.timeEnd()

在調試時,我們經常需要知道一段代碼執行時間,我們可以使用這兩行代碼來實現。看下面一段代碼:

 

輸出爲:

 

從上面的例子可以看出,我們用 console.time() 和 console.timeEnd() 包圍要測試運行時間的代碼,這兩個方法的參數保持一致,以便正確識別和匹配代碼開始和結束的位置。

 

5console.assert()

console.assert() 類似於單元測試中的斷言,當表達式爲 false 時,輸出錯誤信息。示例如下:

輸出結果如下:

 

6console.count()

調試代碼時,我們經常需要知道一段代碼被執行了多少次,我們可以使用 console.count() 來方便的達到我們的目的。示例如下:

 

運行結果爲:

 

 

7console.group()、 console.groupEnd() 與 console.groupCollapsed()

一般的 console.log() 方法的輸出沒有層級關係,在需要一些顯示層級關係的輸出中顯得蒼白無力,使用 console.group() 可以達到我們的目的。示例代碼如下:

 

運行結果爲:

 

"group" 換成 "groupCollapsed",則默認爲摺疊運行結果。

8console.dir()

console.dir() 是幹嘛的?MDN 上說這個方法是爲了將特定的 JS 對象顯示爲可以交互的列表,而列表是摺疊起來的。這麼說有點抽象,看我在 Chrome 控制檯輸出的效果:

 

 


對於 Chrome 用戶來講,console.dir() 是不是就沒用了呢?然而並不是,看圖:

Chrome 中打印 DOM 元素時,兩個方法輸出的結果大不一樣。console.log() 會將 DOM 元素以 HTML 的形式輸出,而 console.dir() 則會以 JSON 對象的形式輸出。


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章