實用Javascript調(diào)試技巧分享

原文地址:https://segmentfault.com/a/1190000019474390

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

1. 不要使用alert

首先晶疼,alert只能打印出字符串,如果打印的對象不是String又憨,則會調(diào)用toString()方法將該對象轉(zhuǎn)成字符串(比如轉(zhuǎn)成[object Object]這種)翠霍,所以除非你打印String類型的對象,其他什么信息都獲取不到蠢莺。其次寒匙,alert會阻塞UI和javascript的執(zhí)行,必須點擊'OK'按鈕才能繼續(xù)躏将,非常低效锄弱。所以,喜歡使用alert的同學(xué)可以改改這個習(xí)慣了祸憋。

2. 學(xué)會使用console.log

console.log誰都會用会宪,但是很多同學(xué)只知道最簡單的console.log(x)這樣打印一個對象,當(dāng)你的代碼里面console.log多了之后蚯窥,會很難將某條打印結(jié)果和代碼對應(yīng)掸鹅,所以我們可以給打印信息加上一個標(biāo)簽便于區(qū)分:

let x = 1;
console.log('aaaaaaaa', x);

得到:

image

標(biāo)簽不一定要有明確的含義,視覺效果顯著就可以了拦赠,當(dāng)然有明確意義更好巍沙。

事實上,console.log可以接收任意多的參數(shù)荷鼠,最后將這些對象拼接輸出句携,比如:

image

如果打印信息過多,不容易找到目標(biāo)信息的話允乐,可以在控制臺中進行過濾:

image

注意點

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

image

可以發(fā)現(xiàn)兩個console.log輸出的結(jié)果展開后都是[1, 2, 3, 4]牍疏,因為數(shù)組是引用類型蠢笋,所以在展開后獲取到的都是數(shù)組最新的狀態(tài)。我們可以使用JSON.parse(JSON.stringify(...))來解決這個問題:

image

3. 學(xué)會使用console.dir

我們有時候想看看一個DOM對象里面到底有什么屬性和方法麸澜,但是常規(guī)的console.log打印出來的只是HTML標(biāo)簽挺尿,就像這樣:

image

和直接審查元素沒有什么區(qū)別。

如果我們想看到DOM對象作為JavaScript對象的結(jié)構(gòu)可以使用console.dir,比如:

image

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

image

4. 學(xué)會使用console.table

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

console.log打印結(jié)果:

image

console.table打印結(jié)果:

image

非常的準(zhǔn)確和快速!

5. 學(xué)會使用console.time

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

image

6. 使用debugger打斷點

有時候我們需要打斷點進行單步調(diào)試悄晃,一般會選擇在瀏覽器控制臺直接打斷點玫霎,但這樣還需要先去Sources里面找到源碼,然后再找到需要打斷點的那行代碼妈橄,比較費時間庶近。使用debugger關(guān)鍵詞,我們可以直接在源碼中定義斷點眷蚓,方便很多鼻种,比如:

image

7. 查到源碼文件

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

image

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

image

8. 壓縮JS文件的閱讀

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

image

點完之后變成這樣:

image
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末养铸,一起剝皮案震驚了整個濱河市雁芙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌钞螟,老刑警劉巖兔甘,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異鳞滨,居然都是意外死亡洞焙,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來澡匪,“玉大人熔任,你說我怎么就攤上這事⊙淝椋” “怎么了疑苔?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長甸鸟。 經(jīng)常有香客問我惦费,道長,這世上最難降的妖魔是什么抢韭? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任薪贫,我火速辦了婚禮,結(jié)果婚禮上刻恭,老公的妹妹穿的比我還像新娘后雷。我一直安慰自己,他們只是感情好吠各,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布臀突。 她就那樣靜靜地躺著,像睡著了一般贾漏。 火紅的嫁衣襯著肌膚如雪候学。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天纵散,我揣著相機與錄音梳码,去河邊找鬼。 笑死伍掀,一個胖子當(dāng)著我的面吹牛掰茶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蜜笤,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼濒蒋,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了把兔?” 一聲冷哼從身側(cè)響起沪伙,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎县好,沒想到半個月后围橡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡缕贡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年翁授,在試婚紗的時候發(fā)現(xiàn)自己被綠了拣播。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡收擦,死狀恐怖诫尽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情炬守,我是刑警寧澤牧嫉,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站减途,受9級特大地震影響酣藻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鳍置,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一辽剧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧税产,春花似錦怕轿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至衫冻,卻和暖如春诀紊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背隅俘。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工邻奠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人为居。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓碌宴,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蒙畴。 傳聞我的和親對象是個殘疾皇子贰镣,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容