亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JavaScript如何調試有哪些建議和技巧附五款有用的調試工具

2019-11-20 11:23:42
字體:
來源:轉載
供稿:網友

以下內容是關于javascript如何調試有哪些建議和技巧的相關知識,具體詳情請看下文吧。

瀏覽器開發者工具

我個人最喜歡Chrome開發者工具。雖然Safari和Firefox無法達到Chrome那么高的標準,但它們也在逐漸改善。在Firefox中,可以將Firebug和Firefox開發者工具組合使用。如果Firefox小組在改進內置開發者工具方面繼續表現優異的話,Firebug有一天可能會被淘汰。

先把個人偏好放在一邊,你應該能夠在目標瀏覽器中對任意代碼進行試驗和調試。你的目標瀏覽器可能包括著名的IE8,也可能不包括。
要熟悉你自己選擇的開發者工具。你還可以從IDE(集成開發環境)或者第三方軟件獲得額外的調試支持。

在各種調試工具中,調試的基礎知識是相通的。事實上,我是在90年代從Borland的C開發者環境中學習的調試基礎。斷點、條件斷點、監視與最新版Chrome開發者工具是完全相同的。2000年左右,我在Java中捕獲到第一例異常。堆棧跟蹤(Stack traces)的概念依然適用,即使JavaScript術語將其稱作錯誤(Error),檢查堆棧跟蹤仍然和以前一樣有用。

有些知識點是前端開發特有的。例如:

DOM檢查
DOM斷點
調試事件
內存泄露分析

斷點

使用debugger語句可以在源代碼中增加斷點。一旦到達debugger語句,執行中斷。當前作用域的上下文出現在控制臺中,還有所有的局部變量和全局變量。將鼠標光標移到變量上可以查看變量的值。

在代碼中還可以創建條件斷點:

JavaScript

if (condition) { debugger;}

還可以根據自己需要在開發者工具中插入斷點和條件斷點。在Chrome開發者工具中,在Sources視圖中點擊行號即可增加斷點。如果在斷點上點擊右鍵并選擇“編輯斷點(Edit Breakpoint)”,你還可以增加斷點條件。

節點變化的斷點

如果你的任務是調試垃圾代碼,你可能會有這樣的問題:為什么DOM節點在執行過程中發生了改變。Chrome開發者工具提供了一種方便的斷點,可用來檢測元素樹中的節點變化。

在Elements視圖中,右鍵點擊一個元素,從右鍵菜單中選擇“Break on…”。

節點變化的斷點

DOM斷點的類型可能包括:

選定節點樹狀子目錄(sub-tree)中的節點變化,
選定節點的屬性發生變化,
節點被刪除。

避免記錄引用類型

當記錄對象或數組時,原始類型的值在引用對象記錄中可能會發生變化。當查看引用類型時一定要記住,在記錄和查看期間,代碼執行可能會影響觀測到的結果。

例如,在Chrome開發者工具中執行以下代碼:

JavaScript

var wallets = [{ amount: 0 }];setInterval( function() { console.log( wallets, wallets[0], wallets[0].amount ); wallets[0].amount += 100;}, 1000 );

記錄的第二個和第三個屬性的值是正確的,第一個屬性中對象引用的值是不可靠的。當你第一次在開發者工具中顯示這個屬性時,amount域的值就已經確定了。無論你對同一個引用關閉并重新打開多少次,這個值都不會變化。

記錄參考類型

永遠記得你在記錄什么。記錄原始類型時,使用帶斷點的watch表達式。如果是異步代碼,避免記錄引用類型。

表格記錄

在一些開發者工具中,你可以用console.table在控制臺中記錄對象數組。

嘗試在你的Chrome開發者工具中執行下列代碼:

JavaScript

console.table( [ {   id: 1,   name: 'John',   address: 'Bay street 1' },  {  id: 2,   name: 'Jack',   address: 'Valley road 2.' },  {  id: 3,   name: 'Jim',   address: 'Hill street 3.'  } ] );

輸出是非常好看的表格。所有原始類型都立刻顯示出來,它們的值反應記錄時的狀態。也可以記錄復雜類型,顯示內容為其類型,內容無法顯示。因此,console.table只能用來顯示具有原始類型值的對象構成的二維數據結構。

XHR斷點

有時你可能會遇到錯誤的AJAX請求。如果你無法立刻確認提交請求的代碼,XHR斷點可以幫你節省時間。當提交某一特殊類型的AJAX時,XHR斷點將會終止代碼的執行,并將提交請求的代碼段呈現給用戶。

在Chrome開發者工具的Sources標簽頁中,其中一個斷點類型就是XHR斷點。點擊+圖標,你可以輸入URL片段,當AJAX請求的URL中出現這個URL片段時,JavaScript代碼將會中斷。

事件監聽器斷點

Chrome開發者工具可以捕獲所有類型的事件,當用戶按下一個鍵、點擊一下鼠標時,可以對觸發的事件進行調試。

異常時暫停

Chrome開發者工具可以在拋出異常時暫停執行JavaScript代碼。這可以讓你在Error對象被創建時觀察應用的狀態。

異常時暫停

代碼片段

Sources標簽頁左側面板上有一個代碼片段(Snippet)子標簽頁,可用于保存代碼片段,幫你調試代碼。

如果你堅持使用控制臺調試,反復寫相同的代碼,你應該將你的代碼抽象成調試片段。這樣的話,甚至還可以把你的調試技巧教給你的同事。

Paul Irish發布過一些基本的調試代碼片段,例如在函數執行前插入斷點。審查這些代碼片段,并在網上搜索其他代碼片段,這是很有價值的。

在函數執行前插入斷點

如果你可以得到函數調用的源代碼,你還可以在函數調用前插入斷點來終止函數的執行。如果你想調試f函數,用debug(f)語句可以增加這種斷點。

Unminify最小化代碼

(譯者注:unminify 解壓縮并進行反混淆)

盡可能使用 source map。有時生產代碼不能使用source map,但不管怎樣,你都 不應該直接對生產代碼進行調試。

(譯者注:sourcemap 是針對壓縮合并后的web代碼進行調試的工具)

如果沒有source map的話,你最后還可以求助于Chrome開發者工具Sources標簽頁中的格式化按鈕(Pretty Print Button)。格式化按鈕{}位于源代碼文本區域的下方。格式化按鈕對源代碼進行美化,并改變行號,這使得調試代碼更加方便,堆棧跟蹤更加有效。

格式化按鈕只有在不得已時才會使用。從某種意義上來說,丑代碼就是難看,因為代碼中的命名沒有明確的語義。

DOM元素的控制臺書簽

Chrome開發者工具和Firebug都提供了書簽功能,用于顯示你在元素標簽頁(Chrome)或HTML標簽頁(Firebug)中最后點擊的DOM元素。如果你依次選擇了A元素、B元素和C元素,

$0 表示C元素
$1 表示B元素
$2 表示A元素
如果你又選擇了元素D,那么$0、$1、$2和$3分別代表D、C、B和A。

訪問調用棧

JavaScript

var f = function() { g(); } var g = function() { h(); }var h = function() { console.trace('trace in h'); }f();

Chrome開發者工具中的Sources標簽頁也在Watch表達式下面顯示調用棧。

性能審查

性能審查工具通常是很有用的。這些工具可以用于防止內存泄露,還可以檢測到你的網站哪里需要優化。由于這些工具并不了解你的產品,你可以忽略其某些建議。通常來說,性能分析工具能夠有效范圍,可以使你的網站顯著優化。

審查工具舉例:

Chrome開發者工具的Audit標簽頁
YSlow

熟能生巧

你可能熟悉某些調試技巧,其他技巧也會幫你節省不少時間。如果你開始在實踐中使用這些技巧,我建議你幾周之后重新閱讀本文。你將會驚奇地發現,你的關注點在幾周內就發生了變化。

五個常用的js調試工具

JavaScript被稱作以原型(prototype)為基礎的語言。這種語言有很多特色,比如動態和弱類型,它還有一等函數(first class function)。另一個特點是它是一個多范型(multi-paradigm)語言,支持面向對象、聲明式、函數式的編程風格。

JavaScript最初被用作客戶端語言,瀏覽器實現它用來提供增強的用戶接口。JavaScript在很多現代的網站和Web應用程序中都有應用。JavaScript的一個很棒的功能也很重要,就是我確實可以用它來提高或改善網站的用戶體驗。JavaScript也可以提供豐富的功能和交互的組件。

JavaScript在這技術高速發展的同時變得非常受歡迎。因為受歡迎JavaScript也改進了許多,修改JavaScript腳本有很多事要做。這次我們為開發者帶來了幾個非常有用的JavaScript調試工具。

1)Drosera

可以調試任何WebKit程序,不僅僅是Safari瀏覽器。

2)Dragonfly

源代碼視圖有語法高亮,可以設置斷點。強大的搜索功能,支持正則表達式。

3)Getfirebug

可以在任何網頁編輯、調試和實時監視CSS、HTML和JavaScript。

4)Debugbar

5)Venkman

Venkman是Mozilla的JavaScript調試器名稱。它旨在為以Mozilla為基礎的瀏覽器(Firefox, Netscape 7.x/9.x and SeaMonkey)提供一個強大的JavaScript調試環境。


以上內容是關于JavaScript如何調試有哪些建議和技巧及五款常用的調試工具的相關說明,希望大家喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩三级影视基地| 97成人在线视频| 欧美黑人xxx| 日韩精品视频在线免费观看| 国产精品三级在线| 精品一区二区三区电影| 亚洲欧美综合区自拍另类| 亚洲丝袜av一区| 国产精彩精品视频| 国产中文字幕91| 亚洲欧美一区二区三区情侣bbw| 日韩欧美精品中文字幕| 色婷婷综合久久久久| 日韩网站在线观看| 狠狠躁夜夜躁人人爽超碰91| 亚洲成人av中文字幕| 欧美成人精品在线| 8090成年在线看片午夜| x99av成人免费| 国产一区二区三区在线观看视频| 国产丝袜一区视频在线观看| 欧美日韩在线观看视频小说| 国产不卡视频在线| 26uuu亚洲伊人春色| 亚洲国产高清自拍| 日韩美女激情视频| 亚洲精品xxx| 日韩电影网在线| 国产精品男人的天堂| 欧美日韩亚洲高清| 欧美一级电影免费在线观看| 欧美在线日韩在线| 韩国三级电影久久久久久| 国产精品视频999| 色综合色综合久久综合频道88| 国产精品99久久久久久人| 日本伊人精品一区二区三区介绍| 国产精品美女www爽爽爽视频| 成人欧美一区二区三区黑人| 精品国产一区二区三区久久狼黑人| 国产亚洲精品久久久| 亚洲人成77777在线观看网| 国产精品影片在线观看| 孩xxxx性bbbb欧美| yellow中文字幕久久| 国产精品91在线观看| 2019国产精品自在线拍国产不卡| 欧美性猛交xxxxx水多| 91精品久久久久久| 91久久久久久久久| 国产欧美一区二区三区在线看| 国产一区二区在线播放| 欧美性受xxxx白人性爽| www.欧美精品| 欧美日韩国产限制| 日韩大片免费观看视频播放| 欧美成人午夜免费视在线看片| 日韩精品一区二区三区第95| 亚洲网站在线播放| 日韩美女视频在线观看| 欧美精品第一页在线播放| 欧美人交a欧美精品| 久久影院资源站| 日韩高清有码在线| 亚洲影院色在线观看免费| 亚洲一区二区三区久久| 精品无码久久久久久国产| 国产成人精品视| 久久久久久久国产精品视频| 亚洲码在线观看| 欧洲成人在线观看| 亚洲国产美女久久久久| 亚洲国产精品大全| 色噜噜国产精品视频一区二区| 欧美性生交xxxxx久久久| 国产一区av在线| 国产一区二区在线免费视频| 久久亚洲精品一区二区| 一本大道香蕉久在线播放29| 自拍亚洲一区欧美另类| 国产精品免费视频久久久| 欧美性猛交xxxx免费看漫画| 国产精品久久久久久久久久尿| 欧美日韩免费网站| 国产精品一区二区女厕厕| 欧美日韩国产黄| 美日韩精品视频免费看| 国产精品吴梦梦| 国产91|九色| 91影院在线免费观看视频| 亚洲福利视频专区| 亚洲国产精品视频在线观看| 成人在线激情视频| 亚洲欧美制服丝袜| 2020久久国产精品| 亚洲男人的天堂在线播放| 97国产在线观看| 久久久av亚洲男天堂| 欧美日韩国产中文字幕| 日韩禁在线播放| 国产欧美日韩高清| 亚洲午夜未删减在线观看| 久久成人18免费网站| 国产精品入口免费视| 国产视频观看一区| 国产亚洲精品久久久久久| 久久精品视频中文字幕| 欧美极品少妇xxxxⅹ免费视频| 亚洲精品电影久久久| 性色av一区二区三区免费| 亚洲人成电影在线| 成人网欧美在线视频| 97精品久久久| 久久久国产成人精品| 成人亚洲欧美一区二区三区| 日韩女在线观看| 午夜免费在线观看精品视频| 伊人久久久久久久久久久| 精品国偷自产在线| 国产丝袜一区二区三区免费视频| 韩国精品美女www爽爽爽视频| 欧美视频中文在线看| 国产精品成人一区| 久热精品视频在线免费观看| 欧美日韩国产在线播放| 中文字幕成人精品久久不卡| 欧美激情网友自拍| 欧美高清性猛交| 8x海外华人永久免费日韩内陆视频| 亚洲欧美中文日韩在线| 亚洲一区二区三区乱码aⅴ| 久久在线视频在线| 国产做受高潮69| 欧美极品第一页| 国产一区二区在线免费| 欧美精品一二区| 中文国产成人精品| 日韩欧中文字幕| 亚洲va久久久噜噜噜久久天堂| 国产精品福利在线观看| 日韩美女写真福利在线观看| 久热精品视频在线观看一区| 久久久国产一区| 精品网站999www| 日本人成精品视频在线| 国产精品一区二区久久国产| 国产一区视频在线| 91精品在线播放| 国产精品电影网| 在线亚洲午夜片av大片| 欧美日韩一二三四五区| 欧美性xxxx极品hd欧美风情| 成人黄色免费看| 欧美日韩激情小视频| 久久久久国产视频| 中文字幕亚洲欧美日韩2019| 最近2019中文字幕一页二页| 亚洲国产精品视频在线观看| 国产精品91久久| 国产精品入口尤物| 国产精品一香蕉国产线看观看| 欧美激情视频在线| 欧美综合第一页| 日本韩国在线不卡|