JavaScript代码调试方法实例小结


Posted in Javascript onJanuary 05, 2019

本文实例讲述了JavaScript代码调试方法。分享给大家供大家参考,具体如下:

1 把消息记录到控制台

IE8、Firefox、Chrome 和 Safari 中可以使用 console 对象向 JavaScript 控制台写入消息,它有这些方法:

  • error(message):错误性消息。
  • info(message):信息性消息。
  • log(message):一般性消息。
  • warn(message):警告性消息。

Opera 10.5 之前的版本,是使用 opera.postError() 方法把消息写入控制台的。

可以使用下面的这个函数作为统一写入控制台的接口:

/**
 * 跨浏览器,向控制台写入消息
 * @param message
 */
function log(message) {
  if (typeof console == "object") {
    console.log(message);
  } else if (typeof opera == "object") {
    opera.postError(message);
  } else if (typeof java == "object" && typeof java.lang == "object") {
    java.lang.System.out.println(message);
  }
}

可以在浏览器中安全地使用这个函数:

function sum(num1, num2) {
  log("Entering sum(), arguments are " + num1 + "," + num2);
  log("Before calculation");
  var result = num1 + num2;
  log("After calculation");
  log("Exiting sum()");
  return result;
}

注意:在发布之前,务必移除所有的消息。这可以在部署之前,通过编写特定的代码步骤,实现自动清理。不要使用 alert(),因为弹出的警告框会阻止程序的执行;而且在测试异步操作对时间的影响时,使用警告框也会影响测试结果。

2 把消息记录到当前页面

可以在页面中开辟出一小块区域,用于显示消息:

function log(message) {
  var console = document.getElementById("debuginfo");
  if (console == null) {
    console = document.createElement("div");
    console.id = "debuginfo";
    console.style.background = "#dedede";
    console.style.border = "1px solid silver";
    console.style.padding = "5px";
    console.style.width = "400px";
    console.style.position = "absolute";
    console.style.right = "0px";
    console.style.top = "0px";
    document.body.appendChild(console);
  }
  console.innerHTML += "<p>" + message + "</p>";
}

这种技术在不支持 JavaScript 控制台的 IE7 以及早期版本中,特别有用。

注意:在发布之前,也要移除把错误消息输出到页面中的代码。

3 抛出错误

如果错误消息很具体,那么就可以直接把它当做确定错误来源的依据,比如下面的这个函数:

function divide(num1, num2){
  return num1/num2;
}

这个函数如果其中的一个参数不是数值,那么就会返回 NaN。所以可以在计算前先进行检测:

function divide(num1, num2){
  if(typeof num1 !="number" || typeof num2 !="number"){
    throw new Error("divide(): 两个参数都必须是数值")
  }
  return num1/num2;
}

这个错误消息包含了函数的名称以及导致错误的真正原因,所以如果抛出了这个错误,我们就能立即知道错误的来源以及问题的性质。

大型的应用程序,可以使用下面的这个 assert() 函数抛出自定义错误:

<script type="text/javascript">
  function assert(condition, message) {
    if (!condition) {
      throw new Error(message);
    }
  }
  function divide(num1, num2) {
    assert(typeof num1 == "number" && typeof num2 == "number", "divide():Both arguments must be numbers.");
    return num1 / num2;
  }
  divide(1,"tt");
</script>

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
ExtJs中简单的登录界面制作方法
Aug 19 Javascript
jQuery验证Checkbox是否选中的代码 推荐
Sep 04 Javascript
JavaScript浏览器对象之一Window对象详解
Jun 03 Javascript
jQuery制作圣诞主题页面 更像是爱情影集
Aug 10 Javascript
IE8利用自带的setCapture和releaseCapture解决iframe的拖拽事件方法
Oct 25 Javascript
JavaScript trim 实现去除字符串首尾指定字符的简单方法
Dec 27 Javascript
JS 实现随机验证码功能
Feb 15 Javascript
JS简单实现自定义右键菜单实例
May 31 Javascript
微信小程序progress组件使用详解
Jan 31 Javascript
微信小程序实现底部导航
Nov 05 Javascript
vant(ZanUi)结合async-validator实现表单验证的方法
Dec 06 Javascript
JS中min函数实例讲解
Feb 18 Javascript
JavaScript实现连连看连线算法
Jan 05 #Javascript
JavaScript错误处理操作实例详解
Jan 04 #Javascript
JSON基本语法及与JavaScript的异同实例分析
Jan 04 #Javascript
JavaScript解析及序列化JSON的方法实例分析
Jan 04 #Javascript
Node.js操作系统OS模块用法分析
Jan 04 #Javascript
Node.js console控制台简单用法分析
Jan 04 #Javascript
Node.js JSON模块用法实例分析
Jan 04 #Javascript
You might like
php 特殊字符处理函数
2008/09/05 PHP
PHP 网络开发详解之远程文件包含漏洞
2010/04/25 PHP
php版淘宝网查询商品接口代码示例
2014/06/17 PHP
php实现中文转数字
2016/02/18 PHP
PHP实现简易计算器功能
2020/08/28 PHP
js返回上一页并刷新代码整理
2012/12/21 Javascript
js实现连续英文字符自动换行兼容ie6 ie7和firefox
2013/09/06 Javascript
深入理解JavaScript系列(36):设计模式之中介者模式详解
2015/03/04 Javascript
初识Node.js
2015/03/20 Javascript
举例详解AngularJS中ngShow和ngHide的使用方法
2015/06/19 Javascript
基于javascript实现全屏漂浮广告
2016/03/31 Javascript
Jquery实现$.fn.extend和$.extend函数
2016/04/14 Javascript
纯JS代码实现气泡效果
2016/05/04 Javascript
jquery过滤特殊字符',防sql注入的实现方法
2016/08/17 Javascript
js常用DOM方法详解
2017/02/04 Javascript
angular2+nodejs实现图片上传功能
2017/03/27 NodeJs
jquery实现静态搜索功能(可输入搜索文字)
2017/03/28 jQuery
nodejs之get/post请求的几种方式小结
2017/07/26 NodeJs
vue-cli的eslint相关用法
2017/09/29 Javascript
vue中使用sessionStorage记住密码功能
2018/07/24 Javascript
深入理解react-router 路由的实现原理
2018/09/26 Javascript
JavaScript函数Call、Apply原理实例解析
2020/02/17 Javascript
Python操作列表的常用方法分享
2014/02/13 Python
Python struct模块解析
2014/06/12 Python
初步剖析C语言编程中的结构体
2016/01/16 Python
python 实现返回一个列表中出现次数最多的元素方法
2019/06/11 Python
Pyqt5实现英文学习词典
2019/06/24 Python
PyCharm 光标变成黑块的解决方式
2021/02/06 Python
物业管理个人自我评价
2013/11/08 职场文书
医药专业应届毕业生求职信范文
2014/01/01 职场文书
护理专科毕业自荐信范文
2014/04/21 职场文书
寻找最美家庭活动方案
2014/08/20 职场文书
2014年小学国庆节活动方案
2014/09/16 职场文书
老公出轨后的保证书
2015/05/08 职场文书
农业项目合作意向书
2015/05/08 职场文书
pytorch显存一直变大的解决方案
2021/04/08 Python