好,为了进一步锁定”犯法嫌疑人“,给大年夜家介绍一个对象,也是上图出现两个搁笔之一,见下图:

这个小搁笔的功能叫”逐语句履行“或者叫”慢慢履行“,这是我小我懂得的一个叫法,意思就是,每点击它一次,js语句就会往后履行一句,它还有一个快捷键,F10。下图示范一下它被点击今后的效不雅:
我单击了两次这个按钮(或者应用F10快捷键),js代码大年夜227行履行到了229行,所以我管它叫”逐语句履行“或者”慢慢履行“。这个功能异常的实用,大年夜部分的调试都邑应用到它。
膳绫擎介绍到我单击了两次“逐语句履行”按钮,代码大年夜227交运行到229行,大年夜家认为这意味着啥?是不是说来岁夜语法上来说,前两句是没有问题的,那么是不是也同时意味着前两句就清除嫌疑了呢?我看不然。
大年夜家都知道,加载更多就是一个下一页的功能,而个中最核心的一个就是传给后台的页码数值,每当我点击加载更多按钮一次,页率瞿数值就要加1,所以如不雅下一页的数据没出来,是不是有可能是因为页码数值也就是[i变量](下面同一称呼i)有问题?那么若何排查页码是否存在问题呢?大年夜家本身先思虑思虑。
下面教大年夜家两种查看页码数值i]实际输出值的办法,上图:
第一种:
1.仍然是在227行打上断点 → 2. 点击加载更多按钮 → 3. 单击一次“逐语句履行“按钮,js代码履行到228行 → 4.用鼠标选中i++(什么叫选中大年夜家里不睬解?就是你要复制一个器械,是不是要选中它?对,就是这个选中) → 5. 选中今后,鼠标悬浮在目标上方,你就看到上图的结不雅。
这应当是新手很常见的问题,为什么不打断点我就没有办法在控制台直接输出变量的值呢?小我懂得这时刻i只是一个局部变量,如不雅不打上断点,浏览器会把所有的js全部解析完成,console并不克不及拜访到局部变量,只能拜访到全局变量,所以这时刻console会报错i不决义,然则当js打上断点时,console解析到下场部变量i地点的函数内,这时刻i是可以或许被拜访的。
第二种:
膳绫擎的第二种办法里,提到了console这个器械,我们可以称呼它为控制台或者其他什么都可以,这不重要~console的功能很强大年夜,在调试的过程中,我们往往须要知道某些变量的值到底输出了什么,或者我们使悠揭捉?择器[$”.div”)这种]是否选中了我们想要的元素等,都可以在控制台打印出来。当然直接用第一种办法也可以。
给大年夜家示范一下在console里打印我们想要选中的元素。上图~
在控制台中输入$(this),即可获灯揭捉?择的元素,没错,恰是我们所点击的对象——加载更多按钮元素。
困惑一:在没有打断点的情况下,在console输入i,结不雅console报错了。
很简单,console本身就是一个js解析器,$(“.xxx”)就是一个js语句,所以天然console可以或许解析这个语句然后输出结不雅。
介绍完“逐语句履行”按钮和console控制台的用法,最后再介绍一个按钮,上图:
这个按钮我称呼它为“逐过程履行”按钮,和“逐语句履行”按钮不合,“逐过程履行”按钮常用在一个办法调用多个js文件时,涉及到的js代码比较长,则会应用到这个按钮。
我最先想到的是,我点击到底有没有成功?点击事沂攀里的办法有没有运行?好,要想知道这个问题的谜底,我们立马去打个断点尝尝看,断点打在哪?本身先揣摩一下。
上图:
假设上图我只在227行打了个断点,然后一向点击逐语句履行”按钮到229行,这时刻如不雅再点击一次“逐语句履行”按钮呢?则会进入下图的js里:
这些都是zepto库文件的内容,没啥好看标,琅绫擎运行很复杂,我们弗成能一向应用“逐语句履行”按钮,如许你会发明你按了大年夜半天还在库文件琅绫擎绕。。。这时刻咋办?那就该“逐过程履行”按钮上场了。
上图:
我除了在227行打了一个断点,同时还在237行打了一个断点,当我们运行到229行时,直接单击“逐过程履行”按钮,你会发明,js直接跳过了库文件,运行到了237行,大年夜家可以本身应用体验一下。
最后总结:
本文重要介绍了“逐语句履行”按钮、“逐过程履行”按钮、console控制台这三个对象,以及调试bug时的一些思路。对象的用法我就不再赘述了,大年夜家知道用法就行,具体怎么去更合理的应用,还须要大年夜家经由过程大年夜量的实践去总结晋升~
推荐阅读
MaxCompute大年夜数据计算办事 (MaxCompute) 是一种快速、完全托管的 PB/EB 级数据仓库办事。具备万台办事器扩大才能和跨地区容灾才能,是阿里巴巴内部核心大年夜数据寂?娼台,支撑每日>>>详细阅读
本文标题:JS断点调试心得
地址:http://www.17bianji.com/lsqh/34851.html
1/2 1