【如何使用chrome开发者工具调试javascript代码】

news2024/11/19 7:24:48

创作背景

平常开发时我们去解决bug可能会用console.log来来调试,但是断点可以更快地完成工作。

  • log调试的劣势:但是使用console.log时需要我们手动的打开源码,找到相关代码,插入log语句,然后重新加载页面,才能在控制台中查看这些消息;使用log语句时,需要明确指定要检查的每个值。
  • 断点调试的优势:无需了解代码结构即可暂停相关的代码;使用断点,开发者工具会及时显示所有变量的值(因为有些时候,有些变量在你不知情的情况下也会影响你的代码)

演示网址

断点调试演示网址

调试步骤

重现bug

开始调试的前提是你能够一致性地重现bug:在两个输入框输入number1和number2后点击下方按钮。反复执行此操作,你会发现得到的值与预期不同,这就是你要修复的bug!
在这里插入图片描述

打开来源标签页

F12打开chrome的开发者工具,选择并打开来源标签页(sources),找到js文件
在这里插入图片描述
来源标签页界面说明
在这里插入图片描述

使用断点暂停代码

在javascript调试窗格中,点击事件监听器(Event listener breakpoints)->Mouse->click。此步骤的作用是开启鼠标点击事件的断点监听(开发者工具现已设置为在执行任何 click 事件监听器时自动暂停,因为bug出现在点击计算结果的按钮附近,所以我们需要在点击事件处打断点)

返回演示,再次点击Add Number 1 and Number 2。开发者工具会在点击事件函数处暂停
在这里插入图片描述
事件监听断点只是开发者工具中提供的众多断点类型的一种,如下图有很多种
在这里插入图片描述

单步调试代码

导致bug的一种常见原因是脚本执行顺序有误。我们可以通过单步调试代码一次一行地检查代码的执行情况,并弄清楚代码的执行顺序与预期不同。
点击下方按钮就可以逐步执行代码进行调试(会执行每一小步) 在这里插入图片描述
点击下方按钮开发者工具会执行函数,但不会进入它
在这里插入图片描述

设置代码行断点

如果想指定执行到某一行代码时暂停,则可使用代码行断点。点击代码左边的代码行数就可以设置断点
在这里插入图片描述
设置完断点后,点击AddNumber1…按钮,代码执行会暂停在32行断点处,点击下方图标按钮后,代码继续执行至完毕(29、30、31行,开发者工具以内嵌方式显示addend1、adaddend2、sum的值)
继续执行按钮
在这里插入图片描述
在这里插入图片描述

检查变量值

  • 法一——Scope窗格
    在这里插入图片描述
  • 法二——监视表达式watch
    在这里插入图片描述

点击➕可以新增表达式。可以把任何有效的javascript表达式储存在监视表达式中(例如我输入了typeof addend1和sum等…)

  • 法三——控制台
    可以直接在控制台对任意javascript语句求值。在测试方面,可以使用控制台测试bug的潜在解决方法。(esc打开控制台)
    在这里插入图片描述
    23+3=26。说明这个解决方法是正确的,可应用。

应用解决方案

经过上一步的变量值检查,我们已经找到了bug的出处以及它的解决办法,现在就来应用解决方案。你无需离开开发者工具即可修复,直接在开发者工具界面中修改javascript代码

  • 点击继续执行脚本,直至脚本执行完‘在代码编辑器中,将31行var sum = addend1 + addend2 替换为 var sum = parseInt(addend1) + parseInt(addend2)
  • 按Command+S(Mac)或Ctrl+S(Windows)以保存更改
  • 点击停用断点图标,使开发者工具忽略你已设置的任何断点
    在这里插入图片描述
  • 直接在界面中输入不同值进行测试
    在这里插入图片描述

结尾

好!你已经学会了如何在调试javascript时充分利用Chrome开发者工具。
本篇文章介绍了两种设置断点的方法:

  • 代码行断点
  • 事件监听器断点

另外,开发者工具还提供了许多其他的方式:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1620851.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MySQL】数据库操作指南:数据类型篇

🌱博客主页:青竹雾色间 🌱系列专栏:MySQL探险日记 😘博客制作不易欢迎各位👍点赞⭐收藏➕关注 ✨人生如寄,多忧何为 ✨ 文章目录 1. 数值类型1.1 tinyint 类型1.2 bit 类型1.3 小数类型1.3.1 f…

屏幕状态自动检测+鼠标自动操作

目录 一、写在前面 1.1适用场景 1.2涉及到的库 二、函数库 2.1pyautogui-屏幕截图&鼠标操作 2.1.1屏幕截图screenshot函数 2.1.2鼠标移动及单击 2.2Opencv-模板匹配 2.2.1matchTemplate函数 2.2.2minMaxLoc函数 2.2.3相关代码 2.3base64-图片转base64 2.3.1在线…

顺序表的应用-通讯录

顺序表的应用-通讯录 1.操作2.功能要求2.1.功能要求2.2.思路小结2.3.文件梳理2.4.代码实现"SeqList.h""Contact.h""SeqList.c""Contact.c""test.c" 1.操作 链接: 顺序表专题 这篇文章介绍了顺序表的概念与基本操作。 本文将…

54位大咖演讲精华! 中国生成式AI大会圆满收官,TOP50企业榜单揭晓

54位大咖演讲精华! 中国生成式AI大会圆满收官,TOP50企业榜单揭晓© 由 红板报 提供 智东西4月19日报道,为期两天的2024中国生成式AI大会,今日在京圆满收官。 54位产学研投嘉宾代表全程干货爆棚,报名咨询人数逾52…

机械臂模型更换成自己的urdf模块

1.将urdf生成slx文件 smimport(rm_65_flange.urdf);%生成Simscape物理模型 2.更换joint部分(对应与几个输入几个输出)(依次更换) 3.更改关节部分(依次更换) 找到urdf文件夹下的meshes文件夹,看…

python爬虫 - 爬取 json 格式数据(股票行情信息:雪球网,自选股)

文章目录 1. 第一步:安装requests库2. 第二步:获取爬虫所需的header和cookie3. 第三步:获取网页4. 第四步:解析网页5. 第五步:解析 json 结构数据体6. 代码实例以及结果展示 python爬虫五部曲: 第一步&…

Window + Ubuntu 双系统无Ubuntu Bios 启动项

文章目录 安装硬盘位置不重要!!!(但是我安装在了第二张HDD)问题是多盘分位置会导致磁盘主分区变成了简单卷 Bios Ubuntu 启动项修复参考Ubuntu安装U盘进入Try Ubuntu 使用Terminal修复完提示Disable Secure Boot进入Te…

sublime运行编译C和Java

1.先安装终端 参照以下教程 如何在 Sublime 文本编辑器中使用终端?_sublime终端窗口怎么打开-CSDN博客 可能遇到的问题:有些sublime text3可能并没有显示“package control”。这个问题对于笔者来说是有些吊诡的,因为之前一开始安装时是能…

echarts 堆叠柱状图 顶部添加合计

堆叠有3个,后面加了一个对象显示顶部的数据, 其实主要的代码还是在series 的第四项,需要注意的是 series的第四项中的data需要为 data: [0, 0, 0] 顶部的统计才能显示出来 增加的代码如下 {name: 综合,type: bar,stack: total,label: {sh…

tcp inflight 守恒算法的几何解释

接上文:tcp inflight 守恒算法背后的哲学 在 tcp inflight 守恒算法正确性 中,E bw / srtt 的公平最优解是算出来的,如果自然可以用数学描述,那能算出来的东西反过来也一定能通过直感看出来,我倾向于用几何和力学描述…

Linux 深入理解Linux文件系统与日志分析

在Linux系统中,文件名和文件数据是分开存储的 文件数据包含 元信息(即不包含文件名的文件属性) 和 实际数据 文件元信息存储在 inode(索引节点)里, 文件实际数据存储在 block(块)里; 文件名存储在目录块里 查看文件的元信息 stat 文件名 [ro…

Maven基础篇7

私服-idea访问私服与组件上传 公司团队开发流程 本地上传–>repository–>私服 其他成员从私服拿 1.项目完成后发布到私服 在pom文件最后写上发布的配置管理 ​ //写发布的url也就是你发布到哪一个版本,以及写入id ​ ​ 发布的时候,将项…

ubuntu20 中设置桌面背景任务

1. 下载conky 使用 Conky 在 Ubuntu 中显示信息,例如你的阅读计划,可以分几个步骤来完成。Conky 是一款灵活的轻量级系统监视器,能够在桌面上显示各种信息。以下是基本的设置步骤: 安装 Conky 首先,你需要在 Ubuntu…

【Linux学习】Linux进程(二)

文章目录 📕查看进程🚀/proc目录🚀cwd与exe 📕改变进程的工作目录🚀chdir指令 📕vim卡住了怎么解决 本篇文章接着【LInux进程(一)】继续编写。 📕查看进程 &#x1f68…

java使用trim方法和replaceAll方法去除空格之后,还存在空格

今天使用其他人的一个功能,发现生成的映射少了一个,后面去代码里面debug发现是字符串中左边空格没有去除导致。查看代码,里面是使用了字符串.trim().replaceAll(" ", "")去除空格的。这个代码虽然能去除(半角…

windows查看xxx的版本号

node -v python --version redis-server --version java -version go version mvn -version git --version

工业抗振动和姿态控制的传感器:XV7021BB

针对工业应用的抗振动和姿态控制的陀螺仪传感器XV7021BB。XV7021BB陀螺仪传感器的电源电压(VDDM)均为2.7V~3.6V,接口电源电压(VDDI)范围为1.65V~3.6V,较低的电压需求便于应用电路的设计;XV7021BB内置温度传感器,并集成了用户可选数字滤波器&a…

Redis入门到通关之数据结构解析-Dict

文章目录 概述构成Dict的扩容Dict的rehash总结 欢迎来到 请回答1024 的博客 🍓🍓🍓欢迎来到 请回答1024的博客 关于博主: 我是 请回答1024,一个追求数学与计算的边界、时间与空间的平衡,0与1的延伸的后端开…

华为机考入门python3--(18)牛客18- 识别有效的IP地址和掩码并进行分类统计

分类:字符串 知识点: 字符串是否由数字组成 my_str.isdigit() 字符串填充 不足8位左侧填充0 my_str.zfill(8) 题目来自【牛客】 import sys def classify_ip(ip_mask): ip_class, is_private_ip, mask_class ignore_ip, 0, valid_mask# 解…

为什么大模型训练需要GPU,以及适合训练大模型的GPU介绍

文章目录 前言 1、为什么大模型训练需要GPU,而非CPU 2、现在都有哪些合适的GPU适合训练,价格如何 前言 今天偶然看到一篇关于介绍GPU的推文,我们在复现代码以及模型训练过程中,GPU的使用是必不可少的,那么大模型训练需…