JavaScript调试技巧 (2)

想象一下,要查看第24行car实例调用函数funcZ的整个堆栈跟踪信息:

var car;
var func1 = function() {
 func2();
}

var func2 = function() {
 func4();
}
var func3 = function() {
}

var func4 = function() {
 car = new Car();
 car.funcX();
}
var Car = function() {
 this.brand = ‘volvo’;
 this.color = ‘red’;
 this.funcX = function() {
   this.funcY();
 }

 this.funcY = function() {
   this.funcZ();
 }

 this.funcZ = function() {
   console.trace(‘trace car’)
 }
}
func1();

24行将输出:

JavaScript调试技巧

可以看到 func1 调用 func2, func2 调用 func4。 Func4 创建了一个 Car 的实例,然后调用函数 car.funcX,依此类推。

即使你认为自己的代码写的非常好,这依然很有用。假如你想改进自己的代码。获取跟踪信息和所有涉及的函数,每一项都可以点击,可以在他们之间来回切换。就像是给你提供了一个调用堆栈的选择列表。

7. 将代码格式化后再调试JavaScript

有时代码会在生产环境出问题,但是你的source maps没有部署在生产环境上。不要怕。Chrome可以将您的JavaScript文件格式化。格式化后的代码虽然不像真实代码那样有用,但至少可以看到发生了什么。点击 Chrome控制台中的源代码查看器中的{}按钮即可。

JavaScript调试技巧

8. 快速查找要调试的函数

假设你要在函数中打断点,最常用的两种方式是:

在控制台查找行并添加断点

在代码中添加debugger

在这两个解决方案中,您必须在文件中单击以调试特定行。

使用控制台打断点可能不太常见。在控制台中使用debug(funcName),当到达传入的函数时,代码将停止。

这个调试方法很快, 但缺点是不适用于私有或匿名函数。但除了私有和匿名函数, 这可能是找到调试函数的最快方法。(注意:这个函数和console.debug函数不是同一个东西。)

var func1 = function() {
 func2();
};

var Car = function() {
 this.funcX = function() {
   this.funcY();
 }

 this.funcY = function() {
   this.funcZ();
 }
}

var car = new Car();

在控制台中输入debug(car.funcY),当调用car.funcY时,将以调试模式停止:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyyzdz.html