”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 掌握 JavaScript 调试:新手必备的技巧

掌握 JavaScript 调试:新手必备的技巧

发布于2024-11-03
浏览:176

Mastering JavaScript Debugging: est Techniques for Newbie

JavaScript 中的调试涉及通过分析运行时行为、跟踪程序流程以及使用浏览器控制台、调试器和日志记录技术等工具来识别和修复错误。以下是 JavaScript 中调试的各种方法。
1.使用调试器关键字
debugger 关键字强制 JavaScript 引擎在某个点停止执行。当遇到时,它会暂停代码执行并打开浏览器的调试工具。
句法:
调试器;
例子:

function sum(a, b) { 
   debugger; // Execution stops here 
   return a   b; 
} 

let result = sum(5, 10); 
// When run, code will pause at the debugger line

这允许您使用浏览器的开发人员工具检查此时的变量和程序状态。
2.使用 console.log()
console.log() 将数据输出到浏览器的控制台,帮助您在运行时跟踪值和程序流程。
句法:

console.log(value)
Example:
let name = "John"; 
let age = 30; 

console.log("Name: "   name); 
// Output: Name: John 
console.log("Age: ", age); 
// Output: Age: 30

通过在代码中放置 console.log() 语句,您可以验证变量是否包含预期值。
3.使用断点
可以直接在浏览器的开发人员工具中设置断点。它们在特定行停止代码执行,允许您检查当时的程序状态。
设置断点的步骤:

  1. 打开开发者工具(按 F12 或右键单击并选择“检查”)。
  2. 转到“来源”选项卡。
  3. 选择 JavaScript 文件,然后单击行号设置断点。
  4. 代码执行将在该行暂停,并且可以检查所有变量和状态。 例子:
function multiply(a, b) { 
   return a * b; 
} 

令结果 = 乘法(2, 5);
// 在这里设置断点并检查值
在此示例中,在 multiply() 函数上设置断点后,您可以在开发工具中检查 a 和 b 的值。
4.使用 console.warn() 和 console.error()
这些方法的工作方式类似于 console.log(),但输出在控制台中在视觉上是不同的,有助于区分警告或错误。
句法:

console.warn(message); 
console.error(message);

例子:

let age = 17; 

if (age 



在这种情况下,console.warn() 将显示黄色警告消息,而 console.error() 将显示红色错误。
5.使用 try...catch 语句
try…catch 用于优雅地处理运行时错误,允许您记录错误并防止应用程序崩溃。
句法:

try { 
   // Code that may throw an error 
} catch (error) { 
   console.error(error.message); 
} 

例子:

 try { 
   let result = JSON.parse("invalid JSON string"); 
} catch (error) { 
   console.error("An error occurred: ", error.message); 
   // Logs error without stopping the app 
}

try…catch 块将捕获 JSON 解析错误并将其记录到控制台,而不会导致应用程序崩溃。
6。使用性能监控工具
对于性能调试,开发人员工具中的“性能”选项卡可帮助监控函数执行时间、内存使用情况和性能瓶颈。
步骤:

  1. 打开开发者工具(按 F12)。
  2. 转到“性能”选项卡。
  3. 点击Record开始监控代码执行。
  4. 在您的应用程序中执行操作以收集数据。
  5. 停止录制以分析性能时间线。 例子:
console.time("loop"); 
for (let i = 0; i 



此示例使用 console.time() 和 console.timeEnd() 来测量执行一段代码所需的时间。
通过应用这些方法和性能监控等更先进的技术,您可以有效地调试和解决 JavaScript 代码中的问题。

如果您正在学习 JavaScript,请务必遵循我在 Medium 上的分步教程:https://medium.com/@CodingAdventure

版本声明 本文转载于:https://dev.to/emma_richardson/mastering-javascript-debugging-6-best-techniques-for-newbie-52bp?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 哪种方法更有效地用于点 - 填点检测:射线跟踪或matplotlib \的路径contains_points?
    哪种方法更有效地用于点 - 填点检测:射线跟踪或matplotlib \的路径contains_points?
    在Python Matplotlib's path.contains_points FunctionMatplotlib's path.contains_points function employs a path object to represent the polygon.它...
    编程 发布于2025-06-08
  • Async Void vs. Async Task在ASP.NET中:为什么Async Void方法有时会抛出异常?
    Async Void vs. Async Task在ASP.NET中:为什么Async Void方法有时会抛出异常?
    在ASP.NET async void void async void void void void void的设计无需返回asynchroncon而无需返回任务对象。他们在执行过程中增加未偿还操作的计数,并在完成后减少。在某些情况下,这种行为可能是有益的,例如未期望或明确预期操作结果的火灾和...
    编程 发布于2025-06-08
  • 如何使用Java.net.urlConnection和Multipart/form-data编码使用其他参数上传文件?
    如何使用Java.net.urlConnection和Multipart/form-data编码使用其他参数上传文件?
    使用http request 上传文件上传到http server,同时也提交其他参数,java.net.net.urlconnection and Multipart/form-data Encoding是普遍的。 Here's a breakdown of the process:Mu...
    编程 发布于2025-06-08
  • Python中嵌套函数与闭包的区别是什么
    Python中嵌套函数与闭包的区别是什么
    嵌套函数与python 在python中的嵌套函数不被考虑闭合,因为它们不符合以下要求:不访问局部范围scliables to incling scliables在封装范围外执行范围的局部范围。 make_printer(msg): DEF打印机(): 打印(味精) ...
    编程 发布于2025-06-08
  • 如何在Java的全屏独家模式下处理用户输入?
    如何在Java的全屏独家模式下处理用户输入?
    在Java 中,以全屏幕独立模式运行Java应用程序时,通常无法按期望的工作可能无法使用JAVA应用程序时,将用户输入在Java ProblemPassive rendering mode allows the use of KeyListener and ActionListener inter...
    编程 发布于2025-06-08
  • Spark DataFrame添加常量列的妙招
    Spark DataFrame添加常量列的妙招
    在Spark Dataframe ,将常数列添加到Spark DataFrame,该列具有适用于所有行的任意值的Spark DataFrame,可以通过多种方式实现。使用文字值(SPARK 1.3)在尝试提供直接值时,用于此问题时,旨在为此目的的column方法可能会导致错误。 df.withCo...
    编程 发布于2025-06-08
  • 为什么我会收到MySQL错误#1089:错误的前缀密钥?
    为什么我会收到MySQL错误#1089:错误的前缀密钥?
    mySQL错误#1089:错误的前缀键错误descript [#1089-不正确的前缀键在尝试在表中创建一个prefix键时会出现。前缀键旨在索引字符串列的特定前缀长度长度,以便更快地搜索这些前缀。理解prefix keys `这将在整个Movie_ID列上创建标准主键。主密钥对于唯一识别...
    编程 发布于2025-06-08
  • 找到最大计数时,如何解决mySQL中的“组函数\”错误的“无效使用”?
    找到最大计数时,如何解决mySQL中的“组函数\”错误的“无效使用”?
    如何在mySQL中使用mySql 检索最大计数,您可能会遇到一个问题,您可能会在尝试使用以下命令:理解错误正确找到由名称列分组的值的最大计数,请使用以下修改后的查询: 计数(*)为c 来自EMP1 按名称组 c desc订购 限制1 查询说明 select语句提取名称列和每个名称...
    编程 发布于2025-06-08
  • 如何在Chrome中居中选择框文本?
    如何在Chrome中居中选择框文本?
    选择框的文本对齐:局部chrome-inly-ly-ly-lyly solument 您可能希望将文本中心集中在选择框中,以获取优化的原因或提高可访问性。但是,在CSS中的选择元素中手动添加一个文本 - 对属性可能无法正常工作。初始尝试 state)</option> < op...
    编程 发布于2025-06-08
  • 如何处理PHP文件系统功能中的UTF-8文件名?
    如何处理PHP文件系统功能中的UTF-8文件名?
    在PHP的Filesystem functions中处理UTF-8 FileNames 在使用PHP的MKDIR函数中含有UTF-8字符的文件很多flusf-8字符时,您可能会在Windows Explorer中遇到comploreer grounder grounder grounder gro...
    编程 发布于2025-06-08
  • 为什么我在Silverlight Linq查询中获得“无法找到查询模式的实现”错误?
    为什么我在Silverlight Linq查询中获得“无法找到查询模式的实现”错误?
    查询模式实现缺失:解决“无法找到”错误在银光应用程序中,尝试使用LINQ建立错误的数据库连接的尝试,无法找到以查询模式的实现。”当省略LINQ名称空间或查询类型缺少IEnumerable 实现时,通常会发生此错误。 解决问题来验证该类型的质量是至关重要的。在此特定实例中,tblpersoon可能需...
    编程 发布于2025-06-08
  • 如何限制动态大小的父元素中元素的滚动范围?
    如何限制动态大小的父元素中元素的滚动范围?
    在交互式接口中实现垂直滚动元素的CSS高度限制,控制元素的滚动行为对于确保用户体验和可访问性是必不可少的。一种这样的方案涉及限制动态大小的父元素中元素的滚动范围。问题:考虑一个布局,其中我们具有与用户垂直滚动一起移动的可滚动地图div,同时与固定的固定sidebar保持一致。但是,地图的滚动无限期...
    编程 发布于2025-06-08
  • 在JavaScript中如何并发运行异步操作并正确处理错误?
    在JavaScript中如何并发运行异步操作并正确处理错误?
    同意操作execution 在执行asynchronous操作时,相关的代码段落会遇到一个问题,当执行asynchronous操作:此实现在启动下一个操作之前依次等待每个操作的完成。要启用并发执行,需要进行修改的方法。 第一个解决方案试图通过获得每个操作的承诺来解决此问题,然后单独等待它们: co...
    编程 发布于2025-06-08
  • 在Python中如何创建动态变量?
    在Python中如何创建动态变量?
    在Python 中,动态创建变量的功能可以是一种强大的工具,尤其是在使用复杂的数据结构或算法时,Dynamic Variable Creation的动态变量创建。 Python提供了几种创造性的方法来实现这一目标。利用dictionaries 一种有效的方法是利用字典。字典允许您动态创建密钥并分...
    编程 发布于2025-06-08
  • 将图片浮动到底部右侧并环绕文字的技巧
    将图片浮动到底部右侧并环绕文字的技巧
    在Web设计中围绕在Web设计中,有时可以将图像浮动到页面右下角,从而使文本围绕它缠绕。这可以在有效地展示图像的同时创建一个吸引人的视觉效果。 css位置在右下角,使用css float and clear properties: img { 浮点:对; ...
    编程 发布于2025-06-08

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3