精通這 14 個 JavaScript 除錯技巧,少走很多彎路!
瞭解你的工具可以在完成任務的過程中發揮重大作用。儘管傳言 JavaScript 難以除錯,但是如果你掌握了一些除錯技巧,那麼你將會花費更少的時間來解決這些錯誤。
我們已經列出了14個你可能不知道的除錯技巧,但可能要記住,這樣下次你需要除錯 JavaScript 程式碼時就可以馬上使用了!
現在就馬上開始。
1. ‘debugger;’
除了 console.log , debugger; 是我們最喜歡、快速且骯髒的除錯工具。一旦執行到這行程式碼,Chrome 會在執行時自動停止。 你甚至可以使用條件語句加上判斷,這樣可以只在你需要的時候執行。愚人碼頭注:本人實在覺得這種除錯方面很不好,因為後續的除錯步驟和斷點除錯沒什麼區別。而且除錯完成後,還要記住刪掉這行程式碼。確實有點骯髒。
JavaScript 程式碼:
if (thisThing) {
debugger;
}
2. 將 objects 顯示為表格
有時,你有一個複雜的物件要檢視。你可以用 console.log 檢視並滾動瀏覽該物件,或者使用console.table展開,更容易看到正在處理的內容!
JavaScript 程式碼:
var animals = [
{ animal: 'Horse', name: 'Henry', age: 43},
{ animal: 'Dog', name: 'Fred', age: 13 },
{ animal: 'Cat', name: 'Frodo', age: 18 }
];
console.table(animals);
輸出:
3. 嘗試所有的螢幕尺寸
雖然在桌面裝置上安裝不同移動裝置模擬器非常棒,但在現實世界中並不可行。 應該是調整你的可視視窗,而不是替換移動裝置? Chrome為你提供所需的一切。 進入Chrome 開發者除錯工具,然後點選 ‘toggle device mode(切換裝置模式)’ 按鈕。 實時觀察視窗變化即可!
4. 如何快速找到DOM元素
在 Elements(元素) 面板中標記 DOM 元素,並可以在 console(控制檯) 中使用它。Chrome 檢測器會保留其歷史記錄中的最後 5 個元素,以便最終標記的元素顯示 0,倒數第二個標記元素1 ,依此類推。
如果你按照“item-4”,“item-3”,“item-2”,“item-1”,“item-0”的順序標記下列項,則可以在控制檯中像這樣訪問DOM節點:
5. 使用 console.time() 和 console.timeEnd() 來標記迴圈耗時
要確切地知道某段程式碼需要執行多長時間,尤其是在除錯慢迴圈時,可能會非常有用。您甚至可以通過為該方法分配標籤來設定多個定時器。讓我們看看它是如何工作的:
JavaScript 程式碼:
console.time('Timer1');
var items = [];
for(var i = 0; i < 100000; i++){
items.push({index: i});
}
console.timeEnd('Timer1');
執行產生了如下結果:
6. 獲取函式的堆疊跟蹤資訊
你可能知道JavaScript框架,會引入大量程式碼。
它建立檢視觸發事件,而且你最終會想知道函式呼叫是怎麼發生的。
因為 JavaScript 不是一個很結構化的語言,有時候很難完整的瞭解到底 發生了什麼 以及 什麼時候發生 的。 使用 console.trace((僅僅只是在控制檯中跟蹤) 可以方便地除錯JavaScript 。
假設你現在想看 car 例項在第24行呼叫 funcZ 函式的完整堆疊軌跡資訊:
JavaScript 程式碼:
var car;
var func1 = function() {
func2();
}
var func2 = function() {
func4();
}
var func3 = function() {
}
var func4 = function() {
car = new Car();
car.funcX();
}
var Car = function() {
this.brand = ‘volvo’;
this.color = ‘red’;
this.funcX = function() {
this.funcY();
}
this.funcY = function() {
this.funcZ();
}
this.funcZ = function() {
24行將輸出:
現在我們可以看到 func1 呼叫 func2, func2 呼叫 func4。 Func4 建立了一個 Car 的例項,然後呼叫函式 car.funcX,依此類推。
即使你認為非常瞭解自己的程式碼,這種分析仍然可以讓你感到很方便。假如你想改進你的程式碼。獲取跟蹤資訊和所有涉及的函式