摘要:見過太多同學調試只會用簡單的甚至,看著真為他們捉雞。。下面我就分享一些實用且聰明的調試技巧,希望能讓大家調試自己代碼的時候更加從容自信。其實提供了文件的搜索功能,只不過大部分時候我們給忽略了。。
見過太多同學調試Javascript只會用簡單的console.log甚至alert,看著真為他們捉雞。。因為大多數同學追求優雅而高效地寫代碼,卻忽略了如何優雅而高效地調試代碼,不得不說是有點“偏科”了。下面我就分享一些實用且聰明的調試技巧,希望能讓大家調試自己代碼的時候更加從容自信。
1. 不要使用alert首先,alert只能打印出字符串,如果打印的對象不是String,則會調用toString()方法將該對象轉成字符串(比如轉成[object Object]這種),所以除非你打印String類型的對象,其他什么信息都獲取不到。其次,alert會阻塞UI和javascript的執行,必須點擊"OK"按鈕才能繼續,非常低效。所以,喜歡使用alert的同學可以改改這個習慣了。
2. 學會使用console.logconsole.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.log添加樣式如果我們不想console.log打印結果字體、顏色都一樣,我們想要更醒目的顯示也可以做到。我們可以使用CSS來給console.log增加樣式。比如:
console.important = function (msg) { console.log("%c %s", "color:white; background-color:#FF1744; font-weight:bold; text-transform: uppercase; font-size:18px; padding:4px", msg); } console.todo = function (msg) { console.log("%c %s %s %s", "color:black;background-color:#ffde03; font-size:18px; padding:4px", "–", msg, "–"); } console.important("This is an important message! "); console.todo("This is something need to be done");4. 學會使用console.dir
我們有時候想看看一個DOM對象里面到底有什么屬性和方法,但是常規的console.log打印出來的只是HTML標簽,就像這樣:
和直接審查元素沒有什么區別。
如果我們想看到DOM對象作為JavaScript對象的結構可以使用console.dir,比如:
事實上,console.dir可以打印出任何JavaScript對象的屬性列表,比如打印一個方法:
5. 學會使用console.table我們經常會遇到這樣的場景:獲取到一個用戶列表,每個用戶有很多屬性,但是我們只想查看其中的某些屬性,在用console.log打印出來的時候需要把每個用戶對象展開一個個查看,非常麻煩。而console.table完美的解決這個問題,比如我只想獲取到下列用戶的id和坐標:
console.log打印結果:
console.table打印結果:
非常的準確和快速!
6. 學會使用console.time有時候我們想知道一段代碼的性能或者一個異步方法需要運行多久,這時候需要用到定時器,JavaScript提供了現成的console.time方法,例如:
7. 快速查找DOM元素有時我們需要查找網頁上的某些元素,會選擇在瀏覽器控制臺通過document.querySelector/document.querySelectorAll來查詢。但是chrome和firefox提供了一種更快的方法,使用類似于jQuery的查詢語句:
$(".item")返回符合條件的第一個元素,$$(".item")返回所有符合條件的元素。
8. 使用debugger打斷點有時候我們需要打斷點進行單步調試,一般會選擇在瀏覽器控制臺直接打斷點,但這樣還需要先去Sources里面找到源碼,然后再找到需要打斷點的那行代碼,比較費時間。使用debugger關鍵詞,我們可以直接在源碼中定義斷點,方便很多,比如:
9. 查到源碼文件有時候我們想在控制臺的Sources中查找某個js源文件,要把文件夾逐一點開找,非常麻煩。其實Chrome提供了文件的搜索功能,只不過大部分時候我們給忽略了。。
只要按Command + P(windows的快捷鍵請自行查看)就能彈出搜索框搜索你想要找的文件啦:
10. 壓縮JS文件的閱讀有時候我們需要在Sources中閱讀一段js代碼,但是發現它被壓縮了,Chrome也提供了和方便的格式化工具,讓代碼變得重新可讀:
點完之后變成這樣:
以上就是我個人在平時比較常用的一些調試小技巧,如果大家有其他好的調試技巧也歡迎分享,謝謝
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/104671.html
摘要:今天分享一些平時不常用,但總有一天你會用到的瀏覽器調試技巧。如圖彩蛋介紹一個在瀏覽器中全局搜索代碼的方法,點擊面板,會看到左側有目錄結構,右鍵目錄結構。如圖小擴展還有一個場景一個頁面會從后臺請求字體包,字體包會在某個時刻通過加入到標簽中。 今天分享一些平時不常用,但總有一天你會用到的瀏覽器調試技巧。先來看一個H5頁面,下面是地址http://liticool.info/wsvist/i...
摘要:今天分享一些平時不常用,但總有一天你會用到的瀏覽器調試技巧。如圖彩蛋介紹一個在瀏覽器中全局搜索代碼的方法,點擊面板,會看到左側有目錄結構,右鍵目錄結構。如圖小擴展還有一個場景一個頁面會從后臺請求字體包,字體包會在某個時刻通過加入到標簽中。 今天分享一些平時不常用,但總有一天你會用到的瀏覽器調試技巧。先來看一個H5頁面,下面是地址http://liticool.info/wsvist/i...
摘要:今天分享一些平時不常用,但總有一天你會用到的瀏覽器調試技巧。如圖彩蛋介紹一個在瀏覽器中全局搜索代碼的方法,點擊面板,會看到左側有目錄結構,右鍵目錄結構。如圖小擴展還有一個場景一個頁面會從后臺請求字體包,字體包會在某個時刻通過加入到標簽中。 今天分享一些平時不常用,但總有一天你會用到的瀏覽器調試技巧。先來看一個H5頁面,下面是地址http://liticool.info/wsvist/i...
摘要:今天分享一些平時不常用,但總有一天你會用到的瀏覽器調試技巧。如圖彩蛋介紹一個在瀏覽器中全局搜索代碼的方法,點擊面板,會看到左側有目錄結構,右鍵目錄結構。如圖小擴展還有一個場景一個頁面會從后臺請求字體包,字體包會在某個時刻通過加入到標簽中。 今天分享一些平時不常用,但總有一天你會用到的瀏覽器調試技巧。先來看一個H5頁面,下面是地址http://liticool.info/wsvist/i...
摘要:超實用使用技巧分享長篇前言工欲善其事必先利其器最近受部門的邀請,給入職新人統一培訓,發現有很多新人雖然日常開發使用的是,但是還是很多好用的技巧沒有用到,只是用到一些基本的功能,蠻浪費這個優秀的。 IDEA 超實用使用技巧分享(長篇) showImg(https://segmentfault.com/img/remote/1460000019977268?w=1280&h=800); 前...
閱讀 1904·2021-11-09 09:46
閱讀 2486·2019-08-30 15:52
閱讀 2445·2019-08-30 15:47
閱讀 1320·2019-08-29 17:11
閱讀 1746·2019-08-29 15:24
閱讀 3501·2019-08-29 14:02
閱讀 2442·2019-08-29 13:27
閱讀 1199·2019-08-29 12:32