Javascript 除錯命令——你只會 Console.log() ?

發表於2018-01-26

Console 物件提供對瀏覽器控制檯的接入(如:Firefox 的 Web Console)。不同瀏覽器上它的工作方式是不一樣的,但這裡會介紹一些大都會提供的介面特性。
Console物件可以在任何全域性物件中訪問,如 Window,WorkerGlobalScope 以及通過屬性工作臺提供的特殊定義。
它被瀏覽器定義為 Window.Console,也可被簡單的 Console 呼叫。

最常用的方法就是Console.log(),就是在控制檯輸出內容。剛開始學前端的時候看到大家都是用的Console.log(),幾乎沒有見過Console的其他用法,難道Console真的沒有別的用法了?查了一下後發現Console還是非常強大的,至於為什麼很少看到有人用可能是因為用過都刪掉了吧。在此記錄一下Console的其他用法。

注意:因為Console 物件提供對瀏覽器控制檯的接入 所以在不同瀏覽器中的支援及表現形式可能不太一樣,但是除錯內容只有我們開發者會看,所以保證開發環境能用這些方法就可以了,下面演示全部都為Chrome上面的效果。

分類輸出

不同類別資訊的輸出

Javascript 除錯命令——你只會 Console.log() ?

分組輸出

使用Console.group()Console.groupEnd()包裹分組內容。

還可以使用Console.groupCollapsed()來代替Console.group()生成摺疊的分組。

1460000012957209

Console.group()還可以巢狀使用

1460000012957210

表格輸出

使用console.table()可以將傳入的物件,或陣列以表格形式輸出。適合排列整齊的元素

1460000012957211

檢視物件

使用Console.dir()顯示一個物件的所有屬性和方法
在Chrome中Console.dir()Console.log()效果相同

1460000012957212

檢視節點

使用Console.dirxml()顯示一個物件的所有屬性和方法
在Chrome中Console.dirxml()Console.log()效果相同

百度首頁logo的節點資訊
1460000012957213

條件輸出

利用console.assert(),可以進行條件輸出。

  • 當第一個引數或返回值為真時,不輸出內容
  • 當第一個引數或返回值為假時,輸出後面的內容並丟擲異常

1460000012957214

計次輸出

使用Console.count()輸出內容和被呼叫的次數

1460000012957215

追蹤呼叫堆疊

使用Console.trace()來追蹤函式被呼叫的過程,在複雜專案時呼叫過程非常多,用這個命令來幫你縷清。

1460000012957216

計時功能

使用Console.time()Console.timeEnd()包裹需要計時的程式碼片段,輸出執行這段程式碼的事件。

  • Console.time()中的引數作為計時器的標識,具有唯一性。
  • Console.timeEnd()中的引數來結束此標識的計時器,並以毫秒為單位返回執行時間。
  • 最多同時執行10000個計時器。

1460000012957217

效能分析

使用Console.profile()Console.profile()進行效能分析,檢視程式碼各部分執行消耗的時間,但是我在Chrome自帶的除錯工具中並沒有找到在哪裡檢視這兩個方法生成的分析報告。應該需要其他的除錯工具。

具體參考這裡:
http://www.oschina.net/transl…

有趣的Console.log()

最後再來介紹一下強大的Console.log(),這個方法有很多的用法(其他輸出方法的用法,如error()等,可以參照log()使用)。

一、提示輸出

可以再輸出的物件、變數前加上提示資訊,增加辨識度

1460000012957218

二、格式化輸出

佔位符 含義
%s 字串輸出
%d or %i 整數輸出
%f 浮點數輸出
%o 列印javascript物件,可以是整數、字串以及JSON資料

樣例:

1460000012957219

三、自定義樣式

使用%c為列印內容定義樣式,再輸出資訊前加上%c,後面寫上標準的css樣式,就可以為輸出的資訊新增樣式了

1460000012957220

總結

Console的用法很多,有些再除錯過程中非常實用,可以節省很多時間。當然我知道debug還是用斷點除錯的方法比較好,但是小問題用“printf大法”也是很好用的(滑稽臉)。

參考資料

  1. https://developer.mozilla.org…
  2. http://www.jb51.net/article/5…
  3. https://segmentfault.com/a/11…
  4. https://www.cnblogs.com/liyun…

相關文章