AJax技术

浅析JavaScript 调试方法和技巧

字号+ 作者:H5之家 来源:H5之家 2017-07-19 08:01 我要评论( )

本文给大家浅析javascript调试方法和技巧,涉及到javascript调试方法和技巧方面的知识,本文介绍的非常详细,非常具有参考借鉴介绍,感兴趣的朋友一起看看吧 jav

javascript简称JS,是网页的前端开发语言,直接运行在浏览器上,以前我刚开始学的时候,并不懂这个,所以我每次开发或调试它,都是在vs.net里面,现在想想,实在是太痛苦了,其实JS是执行在浏览器的,而不是执行在服务器的,所以根本没必要在网页开发软件里搞,直接在浏览器中即可调试

浏览器开发者工具

我个人最喜欢Chrome开发者工具。 虽然Safari和Firefox无法达到Chrome那么高的标准,但它们也在逐渐改善。在Firefox中,可以将Firebug和Firefox开发者工具组合使用。如果Firefox小组在改进内置开发者工具方面继续表现优异的话,Firebug有一天可能会被淘汰。

先把个人偏好放在一边,你应该能够在目标浏览器中对任意代码进行试验和调试。你的目标浏览器可能包括著名的IE8,也可能不包括。

要熟悉你自己选择的开发者工具。你还可以从IDE(集成开发环境)或者第三方软件获得额外的调试支持。

在各种调试工具中,调试的基础知识是相通的。事实上,我是在90年代从Borland的C开发者环境中学习的调试基础。断点、条件 断点、监视与最新版Chrome开发者工具是完全相同的。2000年左右,我在Java中捕获到第一例异常。堆栈跟踪(Stack traces)的概念依然适用,即使J avaScript术语将其称作错误(Error),检查堆栈跟踪仍然和以前一样有用。

有些知识点是前端开发特有的。例如:

DOM检查
DOM断点
调试事件
内存泄露分析
断点

使用 debugger 语句可以在源代码中增加断点。一旦到达 debugger 语句,执行中断。当前作用域的上下文出现在控制台中,还有所有的局部变量和全局变量。将鼠标光标移到变量上可以查看变量的值。

在代码中还可以创建条件断点:

JavaScript
 

  • if (condition) { 
  •   debugger
  • 还可以 根据自己需要 在开发者工具中插入断点和条件断点。在Chrome开发者工具中,在Sources视图中点击行号即可增加断点。如果在断点上点击右键并选择“编辑断点(Edit Breakpoint)”,你还可以增加断点条件。

    节点变化的断点

    如果你的任务是调试垃圾代码,你 可能会有这样的问题: 为什么DOM节点在执行过程中发生了改变。Chrome开发者工具提供了一种方便的断点,可用来 检测 元素树中的节点变化。

    在Elements视图中,右键 点击 一个元素,从右键菜单中选择“Break on…”。

     

    DOM断点的类型可能包括:

    选定节点树状子目录 (sub-tree) 中的节点变化,
    选定节点的属性发生变化,
    节点被删除。

    避免记录引用类型

    当记录对象或数组时, 原始类型的值在引用对象记录中可能会发生变化。当查看引用类型时一定要记住,在记录和查看期间,代码执行可能会影响观测到的结果 。

    例如,在Chrome开发者工具中执行以下代码:

    JavaScript
     

  • var wallets = [{ amount: 0 }]; 
  • setInterval( function() { 
  •   console.log( wallets, wallets[0], wallets[0].amount ); 
  •   wallets[0].amount += 100; 
  • }, 1000 ); 
  • 记录的第二个和第三个属 性的值是正确的,第一个属性中对象引用的值是不可靠的。当你第一次在开发者工具中显示这个属性时,amount域的值就已经确定了。无论你对同一个引用关 闭并重新打开多少次,这个值都不会变化。

     

    记录参考类型

    永远记得你在记录什么。记录原始类型时,使用带断点的watch表达式。如果是异步代码,避免记录 引用类型 。

    表格记录

    在一些开发者工具中,你可以用 console.table 在控制台中记录对象数组。

    尝试在你的Chrome开发者工具中执行下列代码:

    JavaScript
     

  • console.table( 
  •   [ 
  •     {  
  •       id: 1,  
  •       name: 'John',  
  •       address: 'Bay street 1' 
  •     },  
  •     { 
  •       id: 2,  
  •       name: 'Jack',  
  •       address: 'Valley road 2.' 
  •     },  
  •     { 
  •       id: 3,  
  •       name: 'Jim',  
  •       address: 'Hill street 3.' 
  •     } 
  •   ] ); 
  •  

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • Ajax中JavaScript的安全性

      Ajax中JavaScript的安全性

      2017-07-15 17:00

    • 网页制作基础知识 / Javascript/Ajax教程

      网页制作基础知识 / Javascript/Ajax教程

      2017-07-14 13:10

    • 实用技巧:使用 jQuery 异步加载 JavaScript 脚本

      实用技巧:使用 jQuery 异步加载 JavaScript 脚本

      2017-07-13 10:01

    • Javascript学习------ajax

      Javascript学习------ajax

      2017-07-11 13:03

    网友点评