`
IT_稻草人
  • 浏览: 5003 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

JAVAScript调试技巧

 
阅读更多
‘debugger;’

除了console.log,debugger就是另一个我很喜欢的快速调试的工具,将debugger加入代码之后,Chrome会自动在插入它的地方停止,很像C或者Java里面打断点。你也可以在一些条件控制中插入该调试语句,譬如:

if (thisThing) {
    debugger;
}
将Objects以表格形式展示

有时候我们需要看一些复杂的对象的详细信息,最简单的方法就是用console.log然后展示成一个列表状,上下滚动进行浏览。不过似乎用console.table展示成列表会更好呦,大概是介个样子:

var animals = [
    { animal: 'Horse', name: 'Henry', age: 43 },
    { animal: 'Dog', name: 'Fred', age: 13 },
    { animal: 'Cat', name: 'Frodo', age: 18 }
];

console.table(animals);


多屏幕尺寸测试

Chrome有一个非常诱人的功能就是能够模拟不同设备的尺寸,在Chrome的Inspector中点击toggle device mode按钮,然后就可以在不同的设备屏幕尺寸下进行调试咯:



在Console快速选定DOM元素

在Elements选择面板中选择某个DOM元素然后在Console中使用该元素也是非常常见的一个操作,Chrome Inspector会缓存最后5个DOM元素在它的历史记录中,你可以用类似于Shell中的$0等方式来快速关联到元素。譬如下图的列表中有‘item-4′, ‘item-3’, ‘item-2’, ‘item-1’, ‘item-0’这几个元素,你可以这么使用:



获取某个函数的调用追踪记录

JavaScript框架极大方便了我们的开发,但是也会带来大量的预定义的函数,譬如创建View的、绑定事件的等等,这样我们就不容易追踪我们自定义函数的调用过程了。虽然JavaScript不是一个非常严谨的语言,有时候很难搞清楚到底发生了啥,特别是当你需要审阅其他人的代码的时候。这时候console.trace就要起作用咯,它可以帮你进行函数调用的追踪。譬如下面的代码中我们要追踪出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();
这边就可以清晰地看出func1调用了func2,然后调用了func4,func4创建了Car的实例然后调用了car.funcX。

格式化被压缩的代码

有时候在生产环境下我们发现了一些莫名奇妙的问题,然后忘了把sourcemaps放到这台服务器上,或者在看别人家的网站的源代码的时候,结果就看到了一坨不知道讲什么的代码,就像下图。Chrome为我们提供了一个很人性化的反压缩工具来增强代码的可读性,大概这么用:



快速定位调试函数

当我们想在函数里加个断点的时候,一般会选择这么做:

在Inspector中找到指定行,然后添加一个断点
在脚本中添加一个debugger调用
不过这两种方法都存在一个小问题就是都要到对应的脚本文件中然后再找到对应的行,这样会比较麻烦。这边介绍一个相对快捷点的方法,就是在console中使用debug(funcName)然后脚本会在指定到对应函数的地方自动停止。这种方法有个缺陷就是无法在私有函数或者匿名函数处停止,所以还是要因时而异:

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

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

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

var car = new Car();


禁止不相关的脚本运行

当我们开发现代网页的时候都会用一些第三方的框架或者库,它们几乎都是经过测试并且相对而言Bug较少的。不过当我们调试我们自己的脚本的时候也会一不小心跳到这些文件中,引发额外的调试任务。解决方案呢就是禁止这部分不需要调试的脚本运行,详情可见这篇文章:: javascript-debugging-with-black-box。

在较复杂的调试情况下发现关键元素

在一些复杂的调试环境下我们可能要输出很多行的内容,这时候我们习惯性的会用console.log, console.debug, console.warn, console.info, console.error这些来进行区分,然后就可以在Inspector中进行过滤。不过有时候我们还是希望能够自定义显示样式,你可以用CSS来定义个性化的信息样式:

console.todo = function(msg) {
console.log(‘ % c % s % s % s‘, ‘color: yellow; background - color: black;’, ‘–‘, msg, ‘–‘);
}

console.important = function(msg) {
console.log(‘ % c % s % s % s’, ‘color: brown; font - weight: bold; text - decoration: underline;’, ‘–‘, msg, ‘–‘);
}

console.todo(“This is something that’ s need to be fixed”);
console.important(‘This is an important message’);


在console.log()中你可以使用%s来代表一个字符串 , %i 来代表数字, 以及 %c 来代表自定义的样式。

监测指定函数的调用与参数

在Chrome中可以监测指定函数的调用情况以及参数:

var func1 = function(x, y, z) {
};


这种方式能够让你实时监控到底啥参数被传入到了指定函数中。

Console中使用$进行元素查询

在Console中也可以使用来进行类似于querySelector那样基于CSS选择器的查询,(‘css-selector’) 会返回满足匹配的第一个元素,而$$(‘css-selector’) 会返回全部匹配元素。注意,如果你会多次使用到元素,那么别忘了将它们存入变量中。



Postman

很多人习惯用Postman进行API调试或者发起Ajax请求,不过别忘了你浏览器自带的也能做这个,并且你也不需要担心啥认证啊这些,因为Cookie都是自带帮你传送的,这些只要在network这个tab里就能进行,大概这样子:



DOM变化检测

DOM有时候还是很操蛋的,有时候压根不知道啥时候就变了,不过Chrome提供了一个小的功能就是当DOM发生变化的时候它会提醒你,你可以监测属性变化等等:

分享到:
评论

相关推荐

    你应该了解的 5 个 JavaScript 调试技巧

    5 个 常用的 JavaScript 调试技巧,帮助学习掌握 JavaScript,希望对大家有帮助

    分享一则javascript 调试技巧

    在本文中,我们将深入探讨一种常用的JavaScript调试技巧——使用`console.log()`来替代传统的`alert()`方法。这种方法不仅可以提供更丰富的调试信息,而且对用户体验的影响也更小。 首先,让我们回顾一下`alert()`...

    推荐5 个常用的JavaScript调试技巧

    本文推荐了5个常用的JavaScript调试技巧,这些技巧能够帮助开发者在开发过程中更加高效地进行问题排查。 首先,"debugger"语句是一个非常实用的工具。在JavaScript代码中,开发者可以自行插入一个断点,这个断点会...

    如何使用chrome自带的Javascript调试工具

    掌握 Chrome DevTools 的 JavaScript 调试技巧,将极大地提升你在前端开发中的效率,帮助你快速定位和修复问题,优化代码性能。在实际使用中,不断探索和实践,你会发现更多实用的功能和快捷操作。

    实用Javascript调试技巧分享(小结)

    本文主要总结了一些实用的JavaScript调试技巧,旨在提高调试效率和体验。 首先,避免使用`alert`来调试。`alert`会阻塞用户界面,且仅能显示字符串形式的数据,对于复杂数据的查看并不友好。推荐使用`console.log`...

    微软的javascript调试工具

    对于初学者和经验丰富的开发者来说,熟练掌握JavaScript调试技巧是提高代码质量和解决问题的关键步骤。因此,了解和学习如何使用微软或其他平台提供的JavaScript调试工具对于任何Web开发者都至关重要。

    让JavaScript调试变得简单

    总之,熟练掌握JavaScript调试技巧和工具,不仅可以快速定位和修复问题,还能帮助你更好地理解和优化代码,提高整体开发质量。不断实践和探索,你将发现JavaScript调试其实并不复杂,反而能成为一种乐趣。

    javaScript调试

    JavaScript是Web开发中不可或缺的一部分,它是一种轻量级的...总之,掌握JavaScript调试技巧和选择合适的IDE是提升开发效率的关键。不断学习和实践,你将能够更好地驾驭JavaScript,创建出更加健壮和高效的Web应用。

    JavaScript的调试与优化

    #### 三、JavaScript调试技巧 ##### 3.1 使用console.log() `console.log()` 是一个非常实用的调试工具,可以在控制台输出信息,帮助开发者追踪程序流程和变量状态。例如: ```javascript function calculate(a, ...

    javascript调试器工具

    JavaScript调试器工具是开发者在编写和优化JavaScript代码时不可或缺的辅助工具。它专门用于处理JavaScript代码中的异常,帮助...在实际工作中,不断实践和探索各种调试技巧,将使你在JavaScript开发领域更加游刃有余。

    IE的JavaScript调试工具

    JavaScript是Web开发中不可或...随着IE浏览器的逐步淘汰,开发者更多地转向了Edge或其他现代浏览器,但这些基本的调试技巧仍然适用于大多数现代浏览器的开发者工具,如Chrome的DevTools或Firefox的Developer Edition。

    javascript小技巧  超强推荐第3 5页.docx

    3. **JavaScript调试技巧之 `console.log()` 详解:** 这是最基础也是最常用的调试工具之一,可以打印各种类型的数据到控制台。 4. **JS调试必备的5个debug技巧:** 包括但不限于使用断点、条件断点、观察表达式等...

    JavaScript调试技巧之console.log()详解

    JavaScript调试是开发者日常工作中不可或缺的一部分,而`console.log()`是其中最常用的调试工具之一。相比传统的`alert()`函数,`console.log()`具有诸多优势。`alert()`会在程序执行过程中弹出对话框,打断用户交互...

    [JavaScript网页编程从入门到精通].庞永庆等.扫描版

    13. **JavaScript调试技巧**:使用开发者工具进行错误排查、性能优化和代码调试。 14. **安全实践**:涵盖XSS(跨站脚本攻击)和CSRF(跨站请求伪造)等常见安全问题及其防范措施。 通过阅读《JavaScript网页编程...

Global site tag (gtag.js) - Google Analytics