這篇文章為大家帶來了關於javascript中的相關知識,其中主要介紹了JavaScript的調試技巧,包括了Sources面板、設定斷點等相關問題,希望對大家有幫助。
相關推薦:javascript影片教學
#作為前端開發,我們會經常使用console.log() 來調試程序中的問題。雖然這種方式也能解決一部分問題,但是它的效率不如能執行逐步除錯的工具。本文就來學習如何使用 Google Chrome developer tools 輕鬆除錯 JavaScript 程式碼。
多數瀏覽器都提供了DevTools 供我們調試JavaScript 應用程序,並且它們的使用方式類似,只要我們學會瞭如何在一個瀏覽器上使用調試工具,就很容易在其他瀏覽器上使用它。
以下就以Greet Me 程式為例,這個程式非常簡單,只要輸入名字和願望,最後會輸出一句話:
當輸入兩個表單值之後,「願望」部分沒有正確列印,而是印出了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)來開啟。
Sources 面板主要由三個部分組成:
檔案導航區:頁面請求的所有檔案都會在此列出;
程式碼編輯區:當我們從檔案導覽列中選取一個檔案時,該檔案的內容就會在此列出,我們可以在這裡編輯程式碼;
Debugger區:這裡會有很多工具可以用來設定斷點,檢查變數值、觀察執行步驟等。
如果DevTools 視窗較寬或未在單獨的視窗中打開,則偵錯器部分將顯示在程式碼編輯器的右側:
二、設定斷點
要開始偵錯程式碼,首先要做的就是設定斷點,斷點就是程式碼執行暫停以便偵錯它的邏輯點。
DevTools 允許我們以不同的方式來設定斷點:
#在程式碼行;
- ##在條件語句中;
- 在DOM 節點處;
- 在事件偵聽器上。
- 點擊切換到Sources 選項卡;
- 從檔案導航部分選取需要偵錯的來源檔案;
- 在右側程式碼編輯器區域找到需要偵錯的程式碼行;
- 點擊行號以在行上設定斷點。
- 點選切換到Sources 標籤;
- 從檔案導覽部分選取需要偵錯的來源檔案;
- 在右側程式碼編輯器區域找到需要偵錯的程式碼行;
- #右鍵點選行號並選擇"Add conditional breakpoint"來新增條件斷點:
#
當print()方法中的name變數值為Joe時,程式碼的執行就會暫停。需要注意,只有我們確定調試的程式碼的大致範圍時,才會使用條件斷點。
3. 在事件監聽器上設定斷點
在事件監聽器上設定斷點的步驟:
點選切換到Sources選項卡;
在debugger區域展開Event Listener Breakpoints選項;
從事件清單中選擇事件監聽器來設定斷點。我們的程式中有一個按鈕點擊事件,這裡就選擇 Mouse 事件選項中的click。
提示:當我們想要暫停在事件觸發後執行的事件偵聽器程式碼時可以使用此選項。
4. 在 DOM 節點中設定斷點
DevTools 在 DOM 檢查和偵錯方面同樣強大。當在 DOM 中新增、刪除或修改某些內容時,可以設定斷點來暫停程式碼的執行。
在DOM 上設定斷點的步驟:
點擊切換到Elements 標籤;
找到要設定斷點的元素;
-
右鍵點選元素以獲得上下文選單,選擇Break on選項,然後選擇Subtree modifications、Attribute modifications、Node removal中的一個即可:
這三個選項的意義如下:
#Subtree modifications:當節點內部子節點變化時斷點;
Attribute modifications:當節點屬性變更時斷點;
Node removal:當節點移除時斷點。
如上圖,我們在輸出訊息的 p 的 DOM 發生變化時設定了一個斷點。當點擊按鈕後,問候訊息輸出到 p 中,子節點的內容髮生了變化,就會發生中斷。
注意: 當我們懷疑是DOM更改導致了錯誤時,就可以使用該選項,當 DOM 更改中斷時,相關的 JavaScript 程式碼執行將自動暫停。
三、逐步偵錯
現在我們知道了設定斷點的方式。在複雜的調試情況下,我們可能需要使用這些調試的組合。調試器提供了五個控制項來逐步執行程式碼:
下面就分別來看看這些控制都是如何使用的。
1. 下一步(快捷鍵:F9)
此選項使我們能夠在JavaScript程式碼執行時逐行執行,如果中途有函數調用,單步執行也會進入函數內部,逐行執行,然後退出。
2. 跳過(快捷鍵:F10)
此選項允許我們在執行程式碼時跳過一些程式碼。有時我們可能已經確定某些功能是正常的,不想花時間去檢查它們,就可以使用跳過選項。
下面就是單步執行logger()函數時,會跳過函數的執行:
#3. 進入(快捷鍵:F11)
使用該選項可以更深入地了解函數。單步執行函數時,當感覺某個函數的行為異常並想檢查它時,就可以使用這個選項來進入函數內部並進行偵錯。
下面就是單步執行logger() 函數:
#4. 跳出(快捷鍵:Shift F11)
在單步執行一個函數時,我們可能不想再繼續執行並退出它,就可以使用這些選項退出函數。
下面就是進入了logger() 函數內部,然後立即退出:
#5. 跳轉(快捷鍵:F8)
有時,我們希望從一個斷點跳到另一個斷點,而無需在它們之間進行任何調試,就可以使用這個選項來跳到下一個斷點:
四、檢查範圍、呼叫堆疊和值
當進行逐行偵錯時,檢查變數的範圍和值以及函數呼叫的呼叫堆疊。在Debugger區可以這三個選項:
1. 範圍(Scope)
可以在Scope 選項中查看局部範圍和全域範圍內的內容以及變量,也可以看到this 的即時指向:
2. 呼叫堆疊
呼叫堆疊面板有助於識別函數執行堆疊:
3. 值
檢查程式碼中的值是識別程式碼中錯誤的主要方法。在單步執行時,我們只需要將滑鼠懸停在變數上即可檢查值。
下面可以看到變數name 在程式碼執行時的檢查值:
#此外,我們可以選擇打碼的一部分作為表達式來檢查值。在下面的範例中,選擇了表達式document.getElementById('m_wish') 來檢查值:
4. Watch
##Watch 部分允許新增一個或多個表達式,並在執行時監視它們的值。當我們想要在程式碼邏輯之外進行一些計算時,這個功能非常有用。我們可以組合來自程式碼區域的任何變量,以形成有效的JavaScript表達式。在逐步執行時,就能看到表達式的值。 以下是新增Watch 的步驟:- 點擊Watch 上的按鈕:
- 新增要監控的表達式。在這個例子中,加入了一個希望觀察其值的變數:
注意,上述方法不會刪除斷點,只會在暫時停用它們。要再次啟動這些斷點,只需再點一次這個斷點即可。
{ "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},即目前資料夾。可能將其變更為 專案入口檔案即可。
- 啟用偵錯。按播放按鈕啟用偵錯選項。
- 用於單步執行斷點以及暫停或停止偵錯的控制項。
- 在原始程式碼上設定斷點。
- 範圍面板查看變數範圍和值。
- 用於建立和監視表達式的監視面板。
- 執行函數的呼叫堆疊。
- 要啟用、停用和刪除的斷點清單。
- 偵錯控制台讀取控制台日誌訊息。
最后,回到最开始的问题,这里不再一步步调试,通过上述的调试方法判定,只需要在 wish 变量前面加一个 + 即可:
const message = 'Hello ' + name + ', Your wish `' + + wish + '` may come true!';
相关推荐:javascript学习教程
以上是超實用的JavaScript調試技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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

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

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

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

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

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

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

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


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3 Linux新版
SublimeText3 Linux最新版

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

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