Javascript之實用debug調試技巧分享

2020-10-05 IT編程達人

見過太多同學調試Javascript只會用簡單的 console.log甚至 alert,看著真為他們捉雞。。因為大多數同學追求優雅而高效地寫代碼,卻忽略了如何優雅而高效地調試代碼,不得不說是有點「偏科」了。下面我就分享一些實用且聰明的調試技巧,希望能讓大家調試自己代碼的時候更加從容自信。

1. 不要使用 alert

首先, alert只能列印出字符串,如果列印的對象不是 String,則會調用 toString()方法將該對象轉成字符串(比如轉成 [object Object]這種),所以除非你列印 String類型的對象,其他什麼信息都獲取不到。其次, alert會阻塞UI和javascript的執行,必須點擊'OK'按鈕才能繼續,非常低效。所以,喜歡使用 alert的同學可以改改這個習慣了。

2. 學會使用 console.log

console.log誰都會用,但是很多同學只知道最簡單的 console.log(x)這樣列印一個對象,當你的代碼裡面 console.log多了之後,會很難將某條列印結果和代碼對應,所以我們可以給列印信息加上一個標籤便於區分:

let x = 1;

console.log('aaaaaaaa', x);

得到:

標籤不一定要有明確的含義,視覺效果顯著就可以了,當然有明確意義更好。

事實上, console.log可以接收任意多的參數,最後將這些對象拼接輸出,比如:

如果列印信息過多,不容易找到目標信息的話,可以在控制臺中進行過濾:

注意點

在使用 console.log列印一個引用類型(比如數組和自定義對象)的對象的時候,輸出結果可能並不是執行 console.log方法那個時間點的值。舉個例子:

可以發現兩個 console.log輸出的結果展開後都是 [1, 2, 3, 4],因為數組是引用類型,所以在展開後獲取到的都是數組最新的狀態。我們可以使用 JSON.parse(JSON.stringify(...))來解決這個問題:

3. 學會使用 console.dir

我們有時候想看看一個DOM對象裡面到底有什麼屬性和方法,但是常規的 console.log列印出來的只是HTML標籤,就像這樣:

和直接審查元素沒有什麼區別。

如果我們想看到DOM對象作為JavaScript對象的結構可以使用 console.dir,比如:

事實上, console.dir可以列印出任何JavaScript對象的屬性列表,比如列印一個方法:

4. 學會使用 console.table

我們經常會遇到這樣的場景:獲取到一個用戶列表,每個用戶有很多屬性,但是我們只想查看其中的某些屬性,在用 console.log列印出來的時候需要把每個用戶對象展開一個個查看,非常麻煩。而 console.table完美的解決這個問題,比如我只想獲取到下列用戶的id和坐標:

console.log列印結果:

console.table列印結果:

非常的準確和快速!

5. 學會使用 console.time

有時候我們想知道一段代碼的性能或者一個異步方法需要運行多久,這時候需要用到定時器,JavaScript提供了現成的 console.time方法,例如:

6. 使用 debugger打斷點

有時候我們需要打斷點進行單步調試,一般會選擇在瀏覽器控制臺直接打斷點,但這樣還需要先去Sources裡面找到源碼,然後再找到需要打斷點的那行代碼,比較費時間。使用 debugger關鍵詞,我們可以直接在源碼中定義斷點,方便很多,比如:

7. 查到源碼文件

有時候我們想在控制臺的 Sources中查找某個js源文件,要把文件夾逐一點開找,非常麻煩。其實Chrome提供了文件的搜索功能,只不過大部分時候我們給忽略了。。

只要按 Command + P(windows的快捷鍵請自行查看)就能彈出搜索框搜索你想要找的文件啦:

8. 壓縮JS文件的閱讀

有時候我們需要在 Sources中閱讀一段js代碼,但是發現它被壓縮了,Chrome也提供了和方便的格式化工具,讓代碼變得重新可讀:

點完之後變成這樣:

以上就是我個人在平時比較常用的一些調試小技巧,如果大家有其他好的調試技巧也歡迎分享,謝謝!

作者:MudOnTire

https://segmentfault.com/a/1190000019474390

相關焦點

  • 實用Javascript 調試技巧分享
    本文原載於SegmentFault專欄「半路出家老菜鳥」作者:MudOnTire整理編輯:SegmentFault見過太多同學調試Javascript只會用簡單的console.log甚至alert,看著真為他們捉急。因為大多數同學追求優雅而高效地寫代碼,卻忽略了如何優雅而高效地調試代碼,不得不說是有點「偏科」了。
  • 分享10個 javascript 在線 debugging 工具
    這裡是10款我們精選的基於瀏覽器的JS在線調試工具,希望大家喜歡!Online Debugging ToolsPastebin是一個協作式的調試工具,幫助你在IRC,IM或者消息版上對話來分享和修改代碼片段
  • 最新的 Javascript 和 CSS 應用技巧薈萃
    隨著前端技術的發展,javascript和css在 網站和web應用中展現出強大的統治力,特別是隨著HTML5和CSS3的標準的成熟,我們可以使用javascript和css開發出你想都沒有想到過
  • 經驗分享:C++編程中的四個調試小技巧
    經驗分享:C++編程中的四個調試小技巧 本文介紹的是C++中的一些編程的小技巧,希望對你有幫助,一起來看。1.調試標記適用預處理#define定義一個或多個調試標記,在代碼中把調試部分使用#ifdef 和#endif 進行管理。當程序最終調試完成後,只需要使用#undef標記,調試代碼就會消失。
  • go runtime debug 小技巧
    結果令我有點沮喪,搜到的幾乎所有文章開篇都是通過GDB調試, 然後就是不同平臺下的彙編代碼。。。這令我很不開心, 雖然C/C++應用很廣泛, 但是我對它真的沒啥興趣啊, 對它相關的調試工具就更加不感冒了, 雖然它可以調試go程序, 但是總感覺心裡少了點什麼, 難道dlv它不香嘛, 於是就有了今天這篇文章dlv命令行debug
  • go runtime debug 小技巧
    結果令我有點沮喪,搜到的幾乎所有文章開篇都是通過GDB調試, 然後就是不同平臺下的彙編代碼。。。這令我很不開心, 雖然C/C++應用很廣泛, 但是我對它真的沒啥興趣啊, 對它相關的調試工具就更加不感冒了, 雖然它可以調試go程序, 但是總感覺心裡少了點什麼, 難道dlv它不香嘛, 於是就有了今天這篇文章dlv命令行debugdlv的名頭應該不用我多說, 所以我們直奔主題1.
  • 10個基於瀏覽器的javascript在線debugging工具
    10個基於瀏覽器的javascript在線debugging工具 調試Javascript可能是web開發中最讓人鬱悶的事情。所以這裡我們絕定來尋找一些好的工具來幫助大家調試。
  • Spring Boot Debug 調試秘籍,日後必定有用
    最近發現 Spring Boot 本地不能 Debug 調試了,原來 Spring Boot 升級後,對應插件的命令參數都變了,故本文做一個升級。If you need to debug it, you should add the necessary JVM arguments to enable remote debugging.
  • 小程序之調試技巧
    有兩種辦法:真機調試:點擊真機調試,然後使用手機操作,同時在PC上彈出的窗口中觀察。手機上查看Console:在手機上查看Console有兩種方式,第一種適用於debug版本的小程序。點擊右上方的菜單按鈕,在彈出的頁面中點擊打開調試。
  • idea debug調試————簡單常用,適合初學者
    下面說一下idea開發工具下的簡單debug。啟動伺服器,只有在debug啟動的前提下,才能進行debug在不同的類中加斷點,如何調試,如何進入方法內部,多斷點調試添加斷點如下圖調試程序的目的是找出問題
  • Android Studio Debug 的 9 個小技巧
    ,學習了這些小技巧能很大程度的降低我們 Debug 的成本,快速定位問題的本質,今天就向大家介紹一下 Android Studio Debug 的 9 個小技巧。所以當我們在某個後臺線程中 debug 問題的時候就可以選擇 Thread,這樣就不會在 debug 的時候阻塞主線程的正常功能。還有一個打開關閉斷點的快捷鍵也分享一下:Windows 用戶 Alt + Click ,Mac Option + Click 。4.
  • javascript如何執行調試
    javascript中執行調試的方法有:使用console.log()方法,或者使用關鍵字「debugger」。有時代碼可能會包含某些錯誤。而作為腳本語言,JavaScript無法在瀏覽器中顯示任何錯誤消息。但是,這些錯誤卻會影響輸出。
  • gdb實用的調試技巧:啟動方式、堆棧信息、單步調試
    對於很多開發者來說,開發過程中難免會遇到各種各樣的bug, 所以,每個開發者應該考慮如何快速高效定位問題原因,而gdb是linux上很實用的調試工具,熟練掌握其調試技巧,將有助於提高解決問題的效率,也是開發者應該掌握的基本技能。
  • gdb實用的調試技巧:啟動方式、堆棧信息、單步調試
    對於很多開發者來說,開發過程中難免會遇到各種各樣的bug, 所以,每個開發者應該考慮的如何快速高效定位問題原因,而gdb是linux上很實用的調試工具,熟練掌握其調試技巧,將有助於提高解決問題的效率,也是開發者應該掌握的基本技能。
  • Visual Studio 調試技巧之即時窗口的妙用
    ,尤其是在調試的時候。下面總結幾個即時窗口的實用技巧。然後在即時窗口編寫調用代碼,它會直接使用當前上下文進行調試。不需要中斷 VS 調試再重新啟動。直接列印是這樣的:結束本文分享的這幾個即時窗口的技巧,在調試時很實用,在工作中我經常使用,希望它也可以幫助你提高開發效率。
  • termux安裝伺服器,手機瀏覽器調試javascript
    用手機瀏覽器就可以訪問手機上的伺服器,但是瀏覽器調試javascript起來很不方便。在手機瀏覽器調試javascript,我用try catchtry{ var avg =100/0; //或者其它要調試的代碼。}catch(e) { alert(e);}沒有console.log我就自製一個。先是用一個文本框用來存放日誌。
  • 14個你可能不知道的JavaScript調試技巧
    以更快的速度和更高的效率來調試JavaScript。熟悉工具可以讓工具在工作中發揮出更大的作用。儘管江湖傳言 JavaScript 很難調試,但如果你掌握了幾個技巧,就能用很少的時間來解決錯誤和bug.文中已經列出了14個你可能不知道的調試技巧,但是可能需要你牢記在心,以便在下次需要調試JavaScript代碼時使用!1. debugger除了console.log, debugger是我們最喜歡、快速且骯髒的調試工具。執行代碼後,Chrome會在執行時自動停止。
  • 這些調試技巧都不會,不要說會VBA編程
    程序調試是編程過程的重要組成部分,程序調試可以讓我們修正程序的語法錯誤和邏輯錯誤,並能儘可能地減少程序中的bug。Excel的VBE也提供了豐富的調試工具,如斷點調試,立即窗口和監視窗口等。下面將介紹幾個常用的VBA編程調試技巧。
  • 缺氧debug模式怎麼用 缺氧debug模式開啟方式及代碼
    《缺氧》 Ps.debug模式僅供娛樂,不建議在正式存檔上使用。 缺氧debug模式是什麼?debug模式簡單說來就是一種作弊,開啟之後我們可以直接修改資源物品的數量,方便我們更簡單的獲取想要的資源。 開啟方法 首先找到缺氧遊戲的安裝位置,進入根目錄下,然後進入文件夾OxygenNotIncluded_Data
  • 安利一個前端移動端開發中的調試工具vconsole
    簡介vConsole 是騰訊開源的一個網頁調試面板,專為手機 web 頁面量身設計,幫助開發者更為便捷地進行開發調試工作。可能對於經常寫h5的朋友們來說已經非常熟悉了,但是對於剛開始寫h5,又苦於不知如何調試的人來說,還是值得一看。