不管我们写代码的时候如何小心,都不可能完全避免程序中出现bug,这个时侯就需要我们在调试的时候找出错误,修改代码。

Javascript是一门灵活的语言,灵活的语法和它解释执行的特性,使得Javascript中的错误更加难以被察觉,当我们在运行是发现错误后,就要在浏览器中对Javascript进行调试了,目前市场上用户数量最大的浏览器IE自然也具备了调试Javascript的功能,让我们来看看吧!

IE 开发人员工具

IE 浏览器是我们Javascript程序的宿主,负责解释并执行Javascript代码。

新版本的IE 浏览器已经集成了开发人员工具,你可以在工具菜单中找到。IE9 及以上版本,如下图:

另外,还可以使用快捷键 F12 打开开发人员工具。打开后的工具窗口如下图:

这个工具窗口是附加在IE窗口中的,你可以通过右侧的三个按钮来最小化、打开独立窗口或关闭它。

这里需要特别说明一下,在IE6中是没有这个工具的,你需要单独的下载IE Developer Toolbar,然后才能使用;以后的版本都已经集成了,如果需要调试代码,按一下F12唤出调试窗口吧。

调试Javascript代码

为了演示Javascript的调试功能,我做了一个这样的页面,代码很简单:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>调试页面</title>
<script type="text/javascript">
function btn_click() {
var a = 1;
var b = "2";
var c = a + b; alert(c);
}
</script>
</head>
<body>
<input type="button" value="确定" onclick="btn_click()" />
</body>
</html>

当我们点击页面中的“确定”按钮的时候,执行btn_click()方法。这个时侯,页面弹出c的值:

我们希望得到的值是3,但这里弹出的是12,很显然这不是我们想要的结果(看出错误在哪里了吗?b定义的值是字符串"2",在和a相加的时候,a被默认转换为字符串类型了,a+b就成了两个字符串相加,结果当然是"12")。

假设我们不知道原因,现在就需要对这一小段代码进行调试了。按下F12键,打开开发人员工具,点击“脚本”选项卡:

我们在btn_click()方法中加入断点,怎么加呢?可以用鼠标点击某一行代码的开头位置加入断点,也可以将光标放到某一行,按下F9添加断点。

加入断点之后,点击“启动调试”按钮,这个时候开发人员工具窗口会脱离IE,打开一个对的调试窗口,并进入调试模式:

我们点击一下“确定”按钮,这个时侯开发人员工具就能捕获到断点了:

我们打了断点的这一行变成了黄色,说明代码整运行到这一行,如果要执行本行代码,按F10或F11:

我们按下F10以后,代码执行到下一行,这个时侯,a已经被定义和赋值,我们可以查看一下a的值:将鼠标放在变量a上面,就会看到a当前的值:

这只是临时查看的办法,如果要监视变量值的变化,总是挪动鼠标可不方便,我们可以选中变量 a ,在变量 a 上面点击鼠标右键,选择“添加监视”,如下图:

这个时侯右侧的监视窗口中就已经添加了对变量 a 的监视:

监视表格中列出了标量的名称、值和类型。

除了这种添加监视的方法之外,我们还可以直接在监视表格的下面,有一个行“单击以添加...”的文字,我们点击以后可以添加我们任何想要监视的对象。如果我们要监视document对象,在里面输入document,然后按回车键:

这样就添加了对document对象的监视,由于这个对象包含了很多的属性和方法,所以前面有一个加号图标,点击这个图标,可以展开document的属性和方法,方便我们对对象的监视。

在这里,我们可以使用快捷键进行操作,常用的快捷键如下:

F9:添加/移除 断点

F10:逐过程,即跳过该语句中的方法、表达式等

F11:逐语句调试,即单步调试,会跳入方法、表达式,进行逐语句的跟踪调试

执行Javascript语句

在调试的过程中,我们是不能够编辑Javascript代码的,如果我们需要即时运行某一句Javascript代码,我们可以在控制台中输入代码,并执行:

我们执行a = 2; 这行语句,然后转到监视窗口中,这个时侯 a 的值已经变成 2 了:

另外一种改变变量值的方法是在监视窗口值直接编辑:双击 a 变量的值对应的单元格可以对它进行编辑:

如果要结束调试,点击“停止调试”按钮就可以了。

在IE中调试Javascript的更多相关文章

  1. [译]如何在visual studio中调试Javascript

    本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...

  2. 在 Chrome DevTools 中调试 JavaScript 入门

    第 1 步:重现错误 找到一系列可一致重现错误的操作始终是调试的第一步. 点击 Open Demo. 演示页面随即在新标签中打开. OPEN DEMO 在 Number 1 文本框中输入 5. 在 N ...

  3. 【VS2017新特性】在VS中调试javascript脚本

    1   概述 VS2017可以调试JS,本篇文章简要概述VS2017关于启用和关闭VS调试功能. 2   具体内容 当开启VS2017JS调试功能时,我们用VS2017打开解决方案时,会出现如下界面: ...

  4. 在VS中调试javascript脚本

    https://blog.csdn.net/u010228798/article/details/78207375

  5. IE、chrome、火狐中如何调试javascript脚本

    1.  IE中点击"F12",在弹出页面中调试javascript脚本 2. chrome中点击"F12",在弹出页面中调试javascript脚本 3.  火 ...

  6. Visual studio 2017 中的Javascript智能提示与调试

    1.智能提示 对于JS文件中的API,你若需要让那个JS文件中的方法能够在你写的那个JS文件中能够智能显示的话,直接把它拉进你的JS文件中就好了. 举个例子:你想 在你正在写的a.js文件中引用b.j ...

  7. IDEA调试javaScript

            谈起JavaScript调试,大家可能想到的就是FireFox下的FireBug,这毫无疑问,FireBug基本已经成为JavaScript开发人员的必备工具.在本文中,将向大家介绍如 ...

  8. 如何调试Javascript代码

    转自原文如何调试Javascript代码 目前,常用的浏览器IE.Chrome.Firefox都有相应的脚本调试功能.作为我们.NET 阵营,学会如何在IE中调试JS就足够了,在掌握了IE中的调试方法 ...

  9. Chrome 中的 JavaScript 断点设置和调试技巧 (转载)

    原文地址:http://han.guokai.blog.163.com/blog/static/136718271201321402514114/ 你是怎么调试 JavaScript 程序的?最原始的 ...

随机推荐

  1. size_t和size_type类型

    size_t一般用来表示一种计数,比如有多少东西被拷贝等.例如:sizeof操作符的结果类型是size_t,该类型保证能容纳实现所建立的最大对象的字节大小. 它的意义大致是“适于计量内存中可容纳的数据 ...

  2. 查找mysql数据库文件的存放位置

    在mysql数据库中,有时候并不是很容易找出mysql数据库文件data的存放位置吗,这时就可以使用mysql自带的命令行工具进行查询. 具体命令如下:show variables like '%da ...

  3. [Head First Python]4. pickle.dump pickle.load

    sketch.py #--*-- coding:utf-8 --*-- import pickle import nester man = [] other = [] try: data = open ...

  4. information_schema.partitions 学习

    1.partitions 表中的常用列说明: 1.table_schema:表所在的数据库名 2.table_name:表名 3.partition_method:表分区采用的分区方法 4.parti ...

  5. Linux释放内存

    在Linux系统下,我们一般不需要去释放内存,因为系统已经将内存管理的很好.但是凡事也有例外,有的时候内存会被缓存占用掉,导致系统使用SWAP空间影响性能,此时就需要执行释放内存(清理缓存)的操作了. ...

  6. TEA加密

    TEA(Tiny Encryption Algorithm)是一种小型的对称加密解密算法,支持128位密码,与BlowFish一样TEA每次只能加密/解密8字节数据.TEA特点是速度快.效率高,实现也 ...

  7. jQuery插件之Form

    一.jQuery.Form.js 插件的作用是实现Ajax提交表单. 方法: 1.formSerilize() 用于序列化表单中的数据,并将其自动整理成适合AJAX异步请求的URL地址格式. 2.cl ...

  8. bzoj3407 [Usaco2009 Oct]Bessie's Weight Problem 贝茜的体重问题

    Description     贝茜像她的诸多姊妹一样,因为从约翰的草地吃了太多美味的草而长出了太多的赘肉.所以约翰将她置于一个及其严格的节食计划之中.她每天不能吃多过H(5≤日≤45000)公斤的干 ...

  9. Asp.Net的核心对象

    原文地址:http://www.cnblogs.com/fish-li/archive/2011/08/21/2148640.html 1.HttpRuntime 对象在处理Http请求的asp.ne ...

  10. UESTC_酱神的旅行 2015 UESTC Training for Dynamic Programming<Problem M>

    M - 酱神的旅行 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit ...