位置: 编程技术 - 正文

浅析JavaScript 调试方法和技巧(js的调试)

编辑:rootadmin

推荐整理分享浅析JavaScript 调试方法和技巧(js的调试),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript调用,javascript怎么设置,javascript调用,js代码如何调试,javascript调用,javascript怎么设置,js调试视频教程,javascript调用,内容如对您有帮助,希望把文章链接给更多的朋友!

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

浏览器开发者工具

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

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

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

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

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

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

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

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

JavaScript

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

节点变化的断点

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

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

DOM断点的类型可能包括:

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

避免记录引用类型

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

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

JavaScript

记录的第二个和第三个属 性的值是正确的,第一个属性中对象引用的值是不可靠的。当你第一次在开发者工具中显示这个属性时,amount域的值就已经确定了。无论你对同一个引用关 闭并重新打开多少次,这个值都不会变化。

记录参考类型

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

表格记录

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

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

JavaScript

输出是非常好看的表格。所有原始类型都立刻显示出来,它们的值反应记录时的状态。也可以记录复杂类型,显示内容为其类型,内容无法显示。因此, console.table 只能用来显示具有原始类型值的对象构成的二维数据结构。

浅析JavaScript 调试方法和技巧(js的调试)

XHR断点

有时你可能会遇到错误的AJAX请求。如果你无法立刻确认提交请求的代码,XHR断点可以帮你节省时间。当提交某一特殊类型的AJAX时,XHR断点将会终止代码的执行,并将提交请求的代码段呈现给用户。

在Chrome开发者工具的Sources标签页中,其中一个断点类型就是XHR断点。点击 + 图标,你可以输入URL片段,当AJAX请求的URL中出现这个URL片段时,JavaScript代码将会中断。

事件监听器断点

Chrome开发者工具可以捕获所有类型的事件,当用户按下一个键、点击一下鼠标时,可以对触发的事件进行调试。

异常时暂停

Chrome开发者工具可以在抛出异常时暂停 执行 JavaScript代码。这可以让你在Error对象被创建时观察应用的状态。

异常时暂停

Sources标签页左侧面板上有一个代码片段(Snippet)子标签页,可用于保存代码片段,帮你调试代码。

如果你坚持使用控制台调试,反复写相同的代码,你应该将你的代码抽象成调试片段。这样的话,甚至还可以把你的调试 技巧教给你 的同事。

Paul Irish发布过一些基本的 调试代码片段 ,例如在函数执行前插入断点。审查这些代码片段,并在网上搜索其他代码片段,这是 很有价值的 。

在函数执行前插入断点

如果你可以得到函数调用的源代码,你还可以在函数调用前插入断点来终止函数的执行。如果你想调试 f 函数,用 debug(f) 语句可以增加这种断点。

Unminify最小化代码

( 译者注:unminify 解压缩并进行反混淆 )

尽可能使用 source map。有时生产代码 不能使用 source map,但不管怎样,你都 不应该直接对生产代码进行调试 。

(译者注:sourcemap 是针对压缩合并后的web代码进行调试的工具)

如果没有source map的话,你最后还可以求助于Chrome开发者工具Sources标签页中的格式化按钮(Pretty Print Button)。格式化按钮 {} 位于源代码文本区域的下方。格式化按钮对源代码进行美化,并改变行号,这使得调试代码更加方便,堆栈跟踪更加有效。

格式化按钮只有在不得已时才会使用。从某种意义上来说, 丑代码就是难看,因为代码中的命名没有明确的语义 。

DOM元素的控制台书签

Chrome开发者工具和Firebug都提供了书签功能,用于显示你在元素标签页(Chrome)或HTML标签页(Firebug)中最后点击的DOM元素。如果你依次选择了 A 元素、 B 元素和 C 元素,

$0 表示 C 元素$1 表示 B 元素$2 表示 A 元素

如果你又选择了元素 D ,那么 $0 、 $1 、 $2 和 $3 分别代表 D 、 C 、 B 和 A 。

访问调用栈

JavaScript

Chrome开发者工具中的Sources标签页也在Watch表达式下面显示调用栈。

性能审查

性能 审查 工具通常是很有用的。这些工具可以用于防止内存泄露,还可以检测到你的网站哪里需要优化。由于这些工具并不了解你的产品,你可以忽略其某些建议。通常来说,性能分析工具能够有效范围,可以使你的网站显著优化。

审查工具举例:

Chrome开发者工具的Audit标签页YSlow

熟能生巧

你可能熟悉某些调试技巧,其他 技巧 也会帮你节省不少时间。如果你开始在实践中使用这些技巧,我建议你几周之后重新阅读本文。你将会惊奇地发现,你的关注点在几周内就发生了变化。

JavaScrip调试技巧之断点调试 首先,在各个浏览器中,断点调试支持的最好的当然是Firefox,Firefox不仅可以使用Firebug调试页面js脚本,还可以用高级调试工具例如JavaScriptDebugger(Venkman)

js检测用户输入密码强度 一个用Javascript检测用户输入密码强度的效果代码,以下代码主要是从以下四个方面检测用户输入的密码的强度的,有兴趣的朋友可以自己添加或修改成

js显示当前日期时间和星期几 JavaScript获取当前日期时间同时显示星期几,具体代码如下:htmlheadmetahttp-equiv="Content-Type"content="text/html;charset=utf-8"/scripttype="text/javascript"src="/jquery/1.7.0/jqu

标签: js的调试

本文链接地址:https://www.jiuchutong.com/biancheng/381638.html 转载请保留说明!

上一篇:JS+CSS实现的竖向简洁折叠菜单效果代码(css li横向显示)

下一篇:JavaScrip调试技巧之断点调试(java 调试)

  • 哪些进项税额可以抵扣销项税额
  • 从价计税消费税计算公式
  • 超市卡发票可以抵扣吗
  • 结转产成品会计分录怎么做
  • 企业的固定资产因自然灾害产生的净损失应计入哪里
  • 企业完税凭证入账后怎么办理退税?
  • 应税销售额含不含税
  • 增值税专用发票丢失了要怎么处理
  • 计提附加税的会计处理
  • 个人可以到税务局来取消办税人员信息吗?
  • 建筑业在外地预缴的所得税能退吗
  • 物业管理公司销售岗位职责
  • 发票税率开错怎么处理?
  • 三证合一对纳税有影响吗
  • 营业收入中包括营业外收入吗
  • 企业借款利息税前扣除怎么算
  • 税务异常不处理会的后果
  • 去办税大厅清卡需要带什么
  • 怎样接收电子承兑汇票流程视频
  • 小规模企业交纳印花税吗
  • 开给销货方红字信息表如何做账?
  • 筹建期间的广宣费
  • 或有事项确认预计负债的分录
  • 连接另外一个设备
  • 广告传媒公司的成本是什么
  • php上传大文件失败
  • 再次研究下cache_lite
  • 一般纳税人购进农产品如何抵扣进项税额
  • PHP:pg_num_rows()的用法_PostgreSQL函数
  • nginx ss
  • php内置数组
  • 机动车空白发票作废税务局需要提供说明
  • 企业所得税核定征收方法
  • 小企业会计准则和一般企业会计准则的区别
  • python抓取淘宝店铺商品
  • 固定资产清理科目核算内容
  • 框架开源
  • vue技术解密
  • 深度学习分析NASA电池数据(1 数据读取)
  • 公司购买空调属于电子设备吗
  • uni app ios
  • 购入固定资产应该怎么做账
  • phpcms怎么样
  • 电子商业汇票是指
  • 网上打印出来的手机买卖协议有效吗
  • 增值税专用发票丢了怎么补救
  • 汇算清缴调增都有哪些项目
  • 消防预付款怎么做分录
  • 印花税减半征收优惠政策2021
  • 建筑工程机械费用标准
  • 什么情况可以作为证人
  • 暂估回冲方式
  • 销售产品领用单独计价的包装物2000元,售价2400元
  • 销售预付卡的账务处理
  • 农产品投入产出法怎么计算
  • 建筑企业结转成本能不能不分人材机
  • 租金收入确认收入时间
  • 存货报废会计账务处理
  • 制造费用和生产成本影响营业利润吗
  • 游戏里区和服的区分
  • 电脑2003系统
  • linux系统的组成及其作用
  • /etc/rc.d/rc与/etc/rc.d/init.d的关系介绍
  • win10用360卫士好吗
  • secondoption是什么意思
  • window10显示重启提示
  • Android之Android apk动态加载机制的研究(二):资源加载和activity生命周期管理
  • Python中lambda的作用
  • unity3d初学者教程视频
  • vuex的作用和使用场景
  • ipc漏洞入侵的基本步骤
  • python3.6语法
  • sell脚本
  • jquery教程 csdn
  • 用jquery实现全选全不选反选
  • 谈谈对人才是第一资源的理解
  • python爬虫教程推荐
  • 税务开通需要什么东西
  • 北京社保登记证怎么办
  • 省税务局属于什么级别
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设