首页
学习
活动
专区
工具
TVP
发布

八、通过断点调试观察JS执行过程

因此,断点调试对于快速定位代码错误,以及快速了解代码的执行过程有着非常重要的作用,这也是我们前端开发必不可少的一个高级技能。...这篇文章的另一个目的在于借助对于断点调试的学习,进一步加深对闭包的理解。 一、基础概念回顾 函数在被调用执行时,会创建一个当前函数的执行上下文。...在我的demo中,我把代码放在app.js,并在index.html中引入。我们暂时只需要关注截图中红色箭头的地方。在最右侧上方,有一排图标。我们可以通过使用他们来控制函数的执行顺序。...•设置断点后刷新页面,JavaScript代码会执行到断点位置处暂停执行,然后我们就可以使用上边介绍过的几个操作开始调试了。...这是来自《你不知道的js》中的一个例子。由于在使用断点调试过程中,发现chrome浏览器理解的闭包与该例子中所理解的闭包不太一致,因此专门挑出来,供大家参考。我个人更加倾向于chrome中的理解。

4.1K11
您找到你想要的搜索结果了吗?
是的
没有找到

移动端网页调试

尽管移动端网页与桌面端网页有诸多差异,但是说到底它还是一个在浏览器里浏览的HTML网页,所以最常用的还是在桌面借助Chrome调试器。...Chrome自带的Developer Tool对于调试移动端网页来说非常方便,可以通过调整下表所示的几个属性来调整页面。...优点:可以完全在真机设备上调试网页,无论是HTML和CSS,还是脚本和请求,都和在桌面浏览器一样,最重要的是当前调试的是在真实环境下的页面。...当看到优点是不是很激动,在真机上可以调试iOS和Android设备的网页耶✌️ 使用vConsole调试 由腾讯出品的vConsole调试工具,在调试移动端的时候非常有效,而且其使用方法也是简单。... // init vConsole var vConsole = new VConsole

1.3K30

移动端网页调试方案

微信平台 微信iOS端是采用wkwebkit进行渲染的,Android平台采用的是x5内核 debug方案 Android端 由于移动端网页开发不能直接打开developer tools,导致我们调试起来稍微麻烦...手机和电脑通过数据线连接,通过命令行执行,显示如图之后,表示成功连接 adb devices 执行结果 然后从chrome浏览器F12找到Remote devices RemoteDevices inspect...调试工具weinre 由于某些app并没有打开remote debug,而我们又要内嵌自己的页面进行调试,抓包只能检测网络请求。所以这个工具就有了使用场景。...它能够检测elements并查看js输出信息。...js脚本,anonymous是appid,你可以自定义 html [removed][removed] 在chrome浏览器中打开地址,选择elements和console监测页面 weinre结果 其他方案

1.2K30

调试JS代码

记录下近期对JS代码的调试过程 性能分析 启动程序之后,打开google浏览器对应页面,按F12或者Ctrl+Shift+I进入 开发者工具页面 目前主要使用的功能有: Performance....性能评估,比如我想看下页面刷新的性能瓶颈所在,先点击 按钮,然后进行页面操作,当页面刷新完成,再点击 按钮,则会生成性能报告,可以看到资源消耗,JS代码的执行逻辑等 Sources....性能报告页面的 部分,可以通过点击色块查看其所在的js代码文件,如 点击则会跳转到 功能栏,有了源文件就可以进行断点调试;这里注意部分js文件是压缩后的文件,建议手动修改程序替换成可读性更强的原始代码文件...,方便调试 Console....查看程序的打印输出,比如我想知道某个函数的执行时间,可以在js代码中进行修改 当js代码执行之后,可以在console输出中看到foo的执行时间 Network.

18.8K10

js --- 执行机制

JS为什么是单线程的?  JS最初被设计用在浏览器中,那么想象一下,如果浏览器中的JS是多线程的。...process1 删除了该dom,而process2 编辑了该dom,同时下达2个矛盾的命令,浏览器究竟该如何执行呢? 2 JS为什么需要异步?...如果JS中不存在异步,只能自上而下执行,如果上一行解析时间很长,那么下面的代码就会被阻塞。 对于用户而言,阻塞就意味着"卡死",这样就导致了很差的用户体验 3 JS单线程又是如何实现异步的呢?   ...是通过的事件循环(event loop),理解了event loop机制,就理解了JS执行机制。...,而是延迟了一段时间,满足一定条件后才去执行的,这类代码,我们叫异步代码。

6.2K20

开发移动端网页调试方法

大家在开发pc端网页的时候调试很方便,直接用浏览器打开就可以了,但是如何进行移动端网页调试呢。...下面我来说几个办法 首先,我向大家推荐一下Chrome浏览器,大家都知道主流浏览器有一个调试模式,一般都是按F12调出,就会出现如下图 ?...这是在我这个博客首页下按下F12出现的界面,点击上图红色圈圈出的位置就是使用移动端调试。点击之后出现下图 ?...大致的移动测试调试都可以在这里进行。但是这并不完全精确,精确的调整还需要到真机中进行测试。...一般我们在开发网页过程中都会安装服务器运行环境,最普遍的是tomcat和phpAdmin两种,关于这两种运行环境我就不在这里介绍了,我重点说一下如果通过移动端连接pc端建立的服务器里部署的网页

1K20

Fiddler远程调试js

使用Fiddler调试本地js   在我们前端开发的日常工作中,发现服务器上某个css/javascript文件有问题,需要修改,那真是家常便饭。...假设我们发现这个页面有问题,需要修改所引用的js文件()。 第一步:用Fiddler查看页面的数据流列表,找到这个js文件的session ?  ...在这个js session上右键点击,选择“Save – Response –Response Body…”,将js文件的内容保存到本地。记住存的位置,下面我们会用到这个保存下来的文件。...通过以上几个步骤,我们演示了怎样将HTTP请求重定向到本地的文件,进行web调试。...这种调试方式不需要发布到线上再验证,避免了修改不成功、对用户造成影响的风险,而且不需要搭建复杂的开发服务器等开发环境,非常适合快速web调试

9.9K30

JS执行机制

JS执行机制 以下代码执行的结果是什么?...console.log(1); setTimeout(function () { console.log(3); }, 0); console.log(2); 1.1 JS 是单线程...单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。这样所导致的问题是: 如果 JS 执行的时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞的感觉。...于是,JS 中出现了同步任务和异步任务。 同步 ​   前一个任务结束后再执行后一个任务,程序的执行顺序与任务的排列顺序是一致的、同步的。...他们的本质区别: 这条流水线上各个流程的执行顺序不同。 1.3 JS执行机制(事件循环) 1. 先执行执行栈中的同步任务。 2. 异步任务(回调函数)放入任务队列中。 3.

7.2K20

JS执行顺序

javascript给人的直观感受是,从上往下执行,但实际上却不是这样的,先看个例子 1. console.log(test); 2. var test = "你好"; 3. console.log(...因为javascript执行时,在同一个作用域内是先编译再执行 编译的时候会编译 function 和 var 这两个关键词定义的变量,编译完成后从上往下执行并向变量赋值 所以执行第1行时, var test...已经执行过了,所以test不会报错,而test2就会报错 需要注意的是,对 var test 执行编译时,只是先定义了 test 这个变量,并不会把 "你好" 这个值赋给test,而是到第2行时才给test...赋值的,这就是为什么第1行的执行结果是 undefined 对于上面的例子,可以这样理解 //先编译 var 定义的变量 1. var test; //编译完成后,从上到下执行代码 2. console.log...//执行结果是"你好" function test() { console.log("你好"); } 模拟编译执行过程 //找到 function 定义的部分进行编译 //以函数名作为变量名,同时用函数赋值

9.1K60

网页调试之debugger原理与绕过

当我们调试JS的时候,时常会遇见无限debugger。无限debugger的原理是什么呢?它在何时触发?如何绕过?...debugger 语句用于停止执行 JavaScript(以下简称JS),并调用 (如果可用) 调试函数。 使用 debugger 语句类似于在代码中设置断点。...设置debugger的原理去对抗反爬,其核心原理就是如果调试工具可用,则调试语句将执行.也就是经常一打开就跳出debugger。...(经过调试是这样的,如果不准确请自行完善哦) debugger绕过原理 debugger的绕过也很简单,我个人总结共有两种大的方向。它们分别是替换、掠过。其原理都是不让debugger执行。...个人并不推荐新手使用替换法中的方法 替换法 JS注入 重写(Hook) 掠过法 Never pause here 条件断点 JS注入 实现js注入的方式有很多,例如chrome Devtools的overrides

6.5K70

mongodb执行js脚本(一)---shell执行

mongodb执行js脚本(一)---shell执行 2015年06月09日 10:58:36 张小凡vip 阅读数 21310更多 所属专栏: mongodb基础与运用 版权声明:本文为博主原创文章...js脚本进行复杂的管理 mongodb 的shell是javascript实现的,如果直接使用js实现相应的功能则显得很直观和简便。...比如我们对一些数据进行 统计计算,除了使用mapreduce之外,直接使用js也是很好的选择。...还有一些批处理,数据同步都可以使用js 使用js脚本进行交互的优点与缺点 (1)无需任何驱动或语言支持; (2)方便cron或管理员定时任务; (3)注意点:任然是数据格式的问题;...js脚本一般会用来执行以下任务 (1)备份; (2)调度map-reduce命令; (3)离线报告,离线任务; (4)管理员定时任务; 如何运行一个js脚本 .

9.3K30
领券