您的位置:

深入探究JS调试:从断点开始

一、断点的含义及作用

断点是调试JS程序中常用的一种技术手段,用于暂停程序的执行,方便开发人员查看各种状态、调用栈、变量值等信息。我们可以在代码中通过设置断点,例如:

function foo() {
  let a = 1;
  let b = 2;
  console.log(a + b);
}

foo();

在DevTools中,我们可以点击行号将断点设置到给定的位置,并打开调试面板;当代码执行到这个位置时,程序会中断执行,以便于我们查看当前的状态变量以及调用栈等。

当然,我们也可以在JS代码中加入debugger语句,这样当程序执行到该语句时,程序同样会中断。

二、单步执行程序

在程序中设置了断点后,我们可以单步执行程序,以便观察每一步的执行结果和状态变化。

DevTools 提供了几种单步执行方式,如下所示:

  • Step Over:执行当前行,如果当前行有函数调用,则不会进入函数,直接跳到函数返回。
  • Step Into:执行当前行,如果当前行有函数调用,则进入该函数执行。
  • Step Out:在函数中执行到某个断点时,使用 Step Out 命令可以直接执行完该函数,继续回到调用该函数的行。

我们可以通过点击上述的按钮或使用对应的快捷键进行单步执行。

三、监控变量的值

JS调试中,常常需要观察变量的值随着程序执行的变化情况。我们可以在 DevTools 中的 Scope 面板上查看变量值和作用域。

我们可以通过设置变量的监视点,以便于在断点命中时自动观察其变量值。例如,下面的代码为 "name" 添加了一个监视点:

let name = "Tom";
console.log(name); // 输出 "Tom"
name = "Jerry";

在 DevTools 中打开 Scope 面板,我们可以看到每个变量的当前值和作用域范围。同时,我们可以对变量进行编辑,以实现动态调试。

四、条件断点

条件断点是一种特殊类型的断点,它只在符合特定条件时才会命中。在代码中,有时某个断点会由于某些原因反复命中,从而导致程序的性能下降,这时候我们可以使用条件断点进行限制。

在设置断点时,我们可以设定条件。例如,我们可以为下面的代码设置条件断点,只在 x 大于 5 时才命中:

function foo(x) {
  for (let i = 0; i < 10; i++) {
    console.log(i);
    if (i === x) {
      debugger;
    }
  }
}

foo(5);

五、XHR调试

在前端开发过程中,我们经常需要和后端进行交互,通过XHR(XML Http Request)请求获取数据。JS调试中,我们经常需要观察XHR请求的状态和响应数据等,以便检测接口的正确性。

在 DevTools 中,我们可以在 Network 面板中查看所有的网络请求,包括XHR请求、资源请求等。我们可以选定某个XHR请求并打开 Preview 窗口,可以查看其返回的数据以及响应状态,以便于调试接口。

六、异常处理

JS开发中,异常处理是程序健壮性的重要组成部分。例如,在程序出现异常时,我们需要捕捉并记录错误信息,以便于进行问题定位和排查。

在 DevTools 的 Console 面板中,我们可以捕捉到运行时产生的异常,并显示栈内部的相关信息。同时,我们还可以在 Sources 面板中设置异常断点,以便于在程序抛出异常时自动中断调试程序。

总结

本篇文章从断点的含义及作用、单步执行程序、监控变量的值、条件断点、XHR调试、异常处理等方面介绍了JS调试的相关知识。在日常开发中,熟练掌握JS调试技术非常重要,可以大大提高开发效率,同时也可以减少出错的概率。

深入探究JS调试:从断点开始

2023-05-21
java学习笔记(java初学笔记)

2022-11-14
js高级程序设计笔记14(js高级程序设计笔记14页)

本文目录一览: 1、JavaScript高级程序设计 该怎么看 2、JavaScript学习笔记之数组基本操作示例 3、JS中有关sort以及return的问题 JavaScript高级程序设计 该怎

2023-12-08
重学java笔记,java笔记总结

2022-11-23
JS同步执行的深入探究

2023-05-20
初始化的js怎么调试,js函数初始化

本文目录一览: 1、JS的初始化方法是什么? 2、如何进行html调试和js脚本调试 3、如何使用firefox进行网页js调试 4、JS怎么进行单步调试 5、如何进行js的debug JS的初始化方

2023-12-08
js调试断点监控(js断点调试代码)

本文目录一览: 1、怎么在f12 js断点失效 2、谷歌浏览器调试js 断点怎么使用 3、javascript中的断点调试是什么意思? 4、怎样从Firebug设断点调试JS代码 5、js怎么断点调试

2023-12-08
python笔记第六天,python第六周笔记

2022-11-21
lodash.clonedeep深入探究

2023-05-20
jsp程序开发学习笔记2,jsp程序设计题库

本文目录一览: 1、《JSP&Servlet学习笔记》pdf下载在线阅读,求百度网盘云资源 2、林信良编著jsp&servlet学习笔记第2版课后答案吗 3、jsp有没有快速掌握的办法呀? 4、要学J

2023-12-08
Object Detection:从入门到深入探究

2023-05-20
js开启调试,js浏览器调试

本文目录一览: 1、如何使用firefox进行网页js调试 2、如何调试JS? 3、如何进行js的debug 4、怎么在ie里打开javascript调试 如何使用firefox进行网页js调试 1、

2023-12-08
我的ipynb笔记本

2023-05-10
java基础知识学习笔记一,Java基础笔记

2022-11-21
达内web前端js笔记(达内jsd)

本文目录一览: 1、web前端里的js技术 2、《web前端笔记7》js字符—获取、查找、遍历、提取、替换方法总结 3、达内web前端开发讲的什么内容 4、2020年自学Web前端要掌握的知识点有哪些

2023-12-08
java笔记,大学java笔记

2022-11-28
印象笔记记录java学习(Java成长笔记)

2022-11-12
深入探究system.threading.timer

2023-05-20
怎样调整js调试,ie怎么调试js

本文目录一览: 1、如何在网页中调试JavaScript 2、有哪些 JS 调试技巧? 3、chrome 如何调试js 4、如何调试JS? 5、JS怎么进行单步调试 如何在网页中调试JavaScrip

2023-12-08
java笔记,尚硅谷java笔记

2022-12-01