搜尋
首頁web前端js教程超實用的JavaScript調試技巧

這篇文章為大家帶來了關於javascript中的相關知識,其中主要介紹了JavaScript的調試技巧,包括了Sources面板、設定斷點等相關問題,希望對大家有幫助。

超實用的JavaScript調試技巧

相關推薦:javascript影片教學

#作為前端開發,我們會經常使用console.log() 來調試程序中的問題。雖然這種方式也能解決一部分問題,但是它的效率不如能執行逐步除錯的工具。本文就來學習如何使用 Google Chrome developer tools 輕鬆除錯 JavaScript 程式碼。

多數瀏覽器都提供了DevTools 供我們調試JavaScript 應用程序,並且它們的使用方式類似,只要我們學會瞭如何在一個瀏覽器上使用調試工具,就很容易在其他瀏覽器上使用它。

以下就以Greet Me 程式為例,這個程式非常簡單,只要輸入名字和願望,最後會輸出一句話:

超實用的JavaScript調試技巧

當輸入兩個表單值之後,「願望」部分沒有正確列印,而是印出了NaN。程式碼線上偵錯:https://greet-me-debugging.vercel.app/。接下來,就來看看 Chrome DevTools 有什麼功能可以偵錯定位程式碼的問題。

一、了解 Sources 面板

DevTools 提供了許多不同的工具供我們進行調試,包括 DOM 檢查、分析和網路呼叫檢查等。這裡要說的是 Sources 面板,它可以幫助我們調試 JavaScript。可以使用快速鍵 F12 開啟控制台,並點選 Sources 標籤以導覽至 Sources 面板,也可以直接使用快速鍵 Command Option I(Mac)或 Control Shift I(Windows、Linux)來開啟。

超實用的JavaScript調試技巧

Sources 面板主要由三個部分組成:

超實用的JavaScript調試技巧

  1. 檔案導航區:頁面請求的所有檔案都會在此列出;

  2. 程式碼編輯區:當我們從檔案導覽列中選取一個檔案時,該檔案的內容就會在此列出,我們可以在這裡編輯程式碼;

  3. Debugger區:這裡會有很多工具可以用來設定斷點,檢查變數值、觀察執行步驟等。

如果DevTools 視窗較寬或未在單獨的視窗中打開,則偵錯器部分將顯示在程式碼編輯器的右側:

超實用的JavaScript調試技巧

二、設定斷點

要開始偵錯程式碼,首先要做的就是設定斷點,斷點就是程式碼執行暫停以便偵錯它的邏輯點。

DevTools 允許我們以不同的方式來設定斷點:

  • #在程式碼行;

  • ##在條件語句中;

  • 在DOM 節點處;

  • 在事件偵聽器上。

1. 在程式碼行設定斷點

設定程式碼行斷點的步驟:

  • 點擊切換到Sources 選項卡;

  • 從檔案導航部分選取需要偵錯的來源檔案;

  • 在右側程式碼編輯器區域找到需要偵錯的程式碼行;

  • 點擊行號以在行上設定斷點。

超實用的JavaScript調試技巧

這裡就在程式碼的第 6 行設定了一個斷點,程式碼在執行到這裡時就會暫停。

2. 設定條件斷點

設定條件斷點的步驟:

  • 點選切換到Sources 標籤;

  • 從檔案導覽部分選取需要偵錯的來源檔案;

  • 在右側程式碼編輯器區域找到需要偵錯的程式碼行;

  • #右鍵點選行號並選擇"Add conditional breakpoint"來新增條件斷點:

超實用的JavaScript調試技巧

點擊之後程式碼行下方就會出現一個對話框,輸入斷點的條件即可:

超實用的JavaScript調試技巧

按下回車鍵(Enter)可以啟動斷點,這時就會在打斷點行的頂部出現一個橘色的圖示:

超實用的JavaScript調試技巧#

當print()方法中的name變數值為Joe時,程式碼的執行就會暫停。需要注意,只有我們確定調試的程式碼的大致範圍時,才會使用條件斷點。

3. 在事件監聽器上設定斷點

在事件監聽器上設定斷點的步驟:

  • 點選切換到Sources選項卡;

  • 在debugger區域展開Event Listener Breakpoints選項;

  • 從事件清單中選擇事件監聽器來設定斷點。我們的程式中有一個按鈕點擊事件,這裡就選擇 Mouse 事件選項中的click。

超實用的JavaScript調試技巧

提示:當我們想要暫停在事件觸發後執行的事件偵聽器程式碼時可以使用此選項。

4. 在 DOM 節點中設定斷點

DevTools 在 DOM 檢查和偵錯方面同樣強大。當在 DOM 中新增、刪除或修改某些內容時,可以設定斷點來暫停程式碼的執行。

在DOM 上設定斷點的步驟:

  • 點擊切換到Elements 標籤;

  • 找到要設定斷點的元素;

  • 右鍵點選元素以獲得上下文選單,選擇Break on選項,然後選擇Subtree modifications、Attribute modifications、Node removal中的一個即可:

超實用的JavaScript調試技巧

這三個選項的意義如下:

  • #Subtree modifications:當節點內部子節點變化時斷點;

  • Attribute modifications:當節點屬性變更時斷點;

  • Node removal:當節點移除時斷點。

如上圖,我們在輸出訊息的 p 的 DOM 發生變化時設定了一個斷點。當點擊按鈕後,問候訊息輸出到 p 中,子節點的內容髮生了變化,就會發生中斷。

注意: 當我們懷疑是DOM更改導致了錯誤時,就可以使用該選項,當 DOM 更改中斷時,相關的 JavaScript 程式碼執行將自動暫停。

三、逐步偵錯

現在我們知道了設定斷點的方式。在複雜的調試情況下,我們可能需要使用這些調試的組合。調試器提供了五個控制項來逐步執行程式碼:

超實用的JavaScript調試技巧

下面就分別來看看這些控制都是如何使用的。

1. 下一步(快捷鍵:F9)

此選項使我們能夠在JavaScript程式碼執行時逐行執行,如果中途有函數調用,單步執行也會進入函數內部,逐行執行,然後退出。

超實用的JavaScript調試技巧

2. 跳過(快捷鍵:F10)

此選項允許我們在執行程式碼時跳過一些程式碼。有時我們可能已經確定某些功能是正常的,不想花時間去檢查它們,就可以使用跳過選項。

下面就是單步執行logger()函數時,會跳過函數的執行:

超實用的JavaScript調試技巧

#3. 進入(快捷鍵:F11)

使用該選項可以更深入地了解函數。單步執行函數時,當感覺某個函數的行為異常並想檢查它時,就可以使用這個選項來進入函數內部並進行偵錯。

下面就是單步執行logger() 函數:

超實用的JavaScript調試技巧

#4. 跳出(快捷鍵:Shift F11)

在單步執行一個函數時,我們可能不想再繼續執行並退出它,就可以使用這些選項退出函數。

下面就是進入了logger() 函數內部,然後立即退出:

超實用的JavaScript調試技巧

#5. 跳轉(快捷鍵:F8)

有時,我們希望從一個斷點跳到另一個斷點,而無需在它們之間進行任何調試,就可以使用這個選項來跳到下一個斷點:

超實用的JavaScript調試技巧

四、檢查範圍、呼叫堆疊和值

當進行逐行偵錯時,檢查變數的範圍和值以及函數呼叫的呼叫堆疊。在Debugger區可以這三個選項:

超實用的JavaScript調試技巧

1. 範圍(Scope)

可以在Scope 選項中查看局部範圍和全域範圍內的內容以及變量,也可以看到this 的即時指向:

超實用的JavaScript調試技巧

2. 呼叫堆疊

呼叫堆疊面板有助於識別函數執行堆疊:

超實用的JavaScript調試技巧

3. 值

檢查程式碼中的值是識別程式碼中錯誤的主要方法。在單步執行時,我們只需要將滑鼠懸停在變數上即可檢查值。

下面可以看到變數name 在程式碼執行時的檢查值:

超實用的JavaScript調試技巧

#此外,我們可以選擇打碼的一部分作為表達式來檢查值。在下面的範例中,選擇了表達式document.getElementById('m_wish') 來檢查值:

超實用的JavaScript調試技巧

4. Watch

##Watch 部分允許新增一個或多個表達式,並在執行時監視它們的值。當我們想要在程式碼邏輯之外進行一些計算時,這個功能非常有用。我們可以組合來自程式碼區域的任何變量,以形成有效的JavaScript表達式。在逐步執行時,就能看到表達式的值。

以下是新增Watch 的步驟:

  1. 點擊Watch 上的按鈕:

超實用的JavaScript調試技巧

  1. 新增要監控的表達式。在這個例子中,加入了一個希望觀察其值的變數:

超實用的JavaScript調試技巧

#另一種觀察表達式值的方法是從控制台的console中新增:

超實用的JavaScript調試技巧

五、停用和刪除斷點

可以點選下列按鈕來停用所有的斷點:

注意,上述方法不會刪除斷點,只會在暫時停用它們。要再次啟動這些斷點,只需再點一次這個斷點即可。 超實用的JavaScript調試技巧

透過取消選取的複選框,可以從「Breakpoints」面板中刪除一個或多個斷點。透過右鍵點選並選擇「刪除所有斷點」選項,可以刪除所有斷點:

超實用的JavaScript調試技巧

#六、使用VS Code 偵錯JavaScript

Visual Studio code 中一些實用的插件可以用於JavaScript 程式碼的調試。可以安裝一個名為“Debugger for Chrome”的插件來調試程式碼:

超實用的JavaScript調試技巧

#安裝之後,點擊左側的run 選項並建立配置以運行/偵錯JavaScript 應用程式.

超實用的JavaScript調試技巧

這樣就會建立一個名為launch.json 的文件,其中包含一些設定資訊:

{
  "version": "0.2.0",
  "configurations": [
      {
          "type": "chrome",
          "request": "launch",
          "name": "Debug the Greet Me app",
          "url": "<http://localhost:5500>",
          "webRoot": "${workspaceFolder}"
      }
  ]
}

可以修改以下參數:

  • name : 任意名稱;

  • url:本地運行的URL;

  • webRoot:預設值為$ {workspaceFolder},即目前資料夾。可能將其變更為 專案入口檔案即可。

最後一步是透過點擊左上角的播放圖示開始偵錯:

超實用的JavaScript調試技巧

這個偵錯器類似於DevTools,主要有以下部分:

  1. 啟用偵錯。按播放按鈕啟用偵錯選項。

  2. 用於單步執行斷點以及暫停或停止偵錯的控制項。

  3. 在原始程式碼上設定斷點。

  4. 範圍面板查看變數範圍和值。

  5. 用於建立和監視表達式的監視面板。

  6. 執行函數的呼叫堆疊。

  7. 要啟用、停用和刪除的斷點清單。

  8. 偵錯控制台讀取控制台日誌訊息。

超實用的JavaScript調試技巧

最后,回到最开始的问题,这里不再一步步调试,通过上述的调试方法判定,只需要在 wish 变量前面加一个 + 即可:

const message = &#39;Hello &#39; 
                        + name 
                        + &#39;, Your wish `&#39; 
                        + + wish 
                        + &#39;` may come true!&#39;;

相关推荐:javascript学习教程

以上是超實用的JavaScript調試技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:CSDN。如有侵權,請聯絡admin@php.cn刪除
JavaScript是用C編寫的嗎?檢查證據JavaScript是用C編寫的嗎?檢查證據Apr 25, 2025 am 12:15 AM

是的,JavaScript的引擎核心是用C語言編寫的。 1)C語言提供了高效性能和底層控制,適合JavaScript引擎的開發。 2)以V8引擎為例,其核心用C 編寫,結合了C的效率和麵向對象特性。 3)JavaScript引擎的工作原理包括解析、編譯和執行,C語言在這些過程中發揮關鍵作用。

JavaScript的角色:使網絡交互和動態JavaScript的角色:使網絡交互和動態Apr 24, 2025 am 12:12 AM

JavaScript是現代網站的核心,因為它增強了網頁的交互性和動態性。 1)它允許在不刷新頁面的情況下改變內容,2)通過DOMAPI操作網頁,3)支持複雜的交互效果如動畫和拖放,4)優化性能和最佳實踐提高用戶體驗。

C和JavaScript:連接解釋C和JavaScript:連接解釋Apr 23, 2025 am 12:07 AM

C 和JavaScript通過WebAssembly實現互操作性。 1)C 代碼編譯成WebAssembly模塊,引入到JavaScript環境中,增強計算能力。 2)在遊戲開發中,C 處理物理引擎和圖形渲染,JavaScript負責遊戲邏輯和用戶界面。

從網站到應用程序:JavaScript的不同應用從網站到應用程序:JavaScript的不同應用Apr 22, 2025 am 12:02 AM

JavaScript在網站、移動應用、桌面應用和服務器端編程中均有廣泛應用。 1)在網站開發中,JavaScript與HTML、CSS一起操作DOM,實現動態效果,並支持如jQuery、React等框架。 2)通過ReactNative和Ionic,JavaScript用於開發跨平台移動應用。 3)Electron框架使JavaScript能構建桌面應用。 4)Node.js讓JavaScript在服務器端運行,支持高並發請求。

Python vs. JavaScript:比較用例和應用程序Python vs. JavaScript:比較用例和應用程序Apr 21, 2025 am 12:01 AM

Python更適合數據科學和自動化,JavaScript更適合前端和全棧開發。 1.Python在數據科學和機器學習中表現出色,使用NumPy、Pandas等庫進行數據處理和建模。 2.Python在自動化和腳本編寫方面簡潔高效。 3.JavaScript在前端開發中不可或缺,用於構建動態網頁和單頁面應用。 4.JavaScript通過Node.js在後端開發中發揮作用,支持全棧開發。

C/C在JavaScript口譯員和編譯器中的作用C/C在JavaScript口譯員和編譯器中的作用Apr 20, 2025 am 12:01 AM

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。1)C 用于解析JavaScript源码并生成抽象语法树。2)C 负责生成和执行字节码。3)C 实现JIT编译器,在运行时优化和编译热点代码,显著提高JavaScript的执行效率。

JavaScript在行動中:現實世界中的示例和項目JavaScript在行動中:現實世界中的示例和項目Apr 19, 2025 am 12:13 AM

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

JavaScript和Web:核心功能和用例JavaScript和Web:核心功能和用例Apr 18, 2025 am 12:19 AM

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。