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 相关文章推荐
[原创]后缀就扩展名为js的文件是什么文件
Dec 06 Javascript
分享一个常用的javascript静态类
Dec 31 Javascript
Javascript中拼接大量字符串的方法
Feb 05 Javascript
js实现滑动触屏事件监听的方法
May 05 Javascript
Vue.js实现分页查询功能
Nov 15 Javascript
JQuery元素快速查找与操作
Apr 22 jQuery
JavaScript封装的常用工具类库bee.js用法详解【经典类库】
Sep 03 Javascript
微信小程序调用微信支付接口的实现方法
Apr 29 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
Sep 12 Javascript
使用layer模态框给新页面传值的方法
Sep 27 Javascript
js实现网页随机验证码
Oct 19 Javascript
js实现移动端轮播图滑动切换
Dec 21 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实现计算两个日期间隔的年、月、周、日数
2013/06/13 PHP
linux下为php添加iconv模块的方法
2016/02/28 PHP
PHP实现获取第一个中文首字母并进行排序的方法
2017/05/09 PHP
php实现将二维关联数组转换成字符串的方法详解
2017/07/31 PHP
PHP设计模式入门之迭代器模式原理与实现方法分析
2020/04/26 PHP
JS 动态加载脚本的4种方法
2009/05/05 Javascript
Mootools 1.2教程(2) DOM选择器
2009/09/14 Javascript
基于jquery的一个简单的脚本验证插件
2010/04/05 Javascript
JavaScript移除数组元素减少长度的方法
2013/09/05 Javascript
JS不间断向上滚动效果代码
2013/12/25 Javascript
JavaScript获取URL汇总
2015/06/08 Javascript
jQuery替换textarea中换行的方法
2015/06/10 Javascript
jQuery+css实现的时钟效果(兼容各浏览器)
2016/01/27 Javascript
使用JavaScript为一张图片设置备选路径的方法
2017/01/04 Javascript
JavaScript关联数组用法分析【概念、定义、遍历】
2017/03/15 Javascript
用JS编写一个函数,返回数组中重复出现过的元素(实例)
2017/09/14 Javascript
微信小程序时间标签和时间范围的联动效果
2019/02/15 Javascript
封装 axios+promise通用请求函数操作
2020/08/11 Javascript
python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
2014/04/25 Python
python使用itchat库实现微信机器人(好友聊天、群聊天)
2018/01/04 Python
Python UnboundLocalError和NameError错误根源案例解析
2018/10/31 Python
python3实现逐字输出的方法
2019/01/23 Python
Python如何计算语句执行时间
2019/11/22 Python
pytorch使用horovod多gpu训练的实现
2020/09/09 Python
Python基于template实现字符串替换
2020/11/27 Python
css3实现图片遮罩效果鼠标hover以后出现文字
2013/11/05 HTML / CSS
CSS3 transition 实现通知消息轮播条
2020/10/14 HTML / CSS
自考毕业自我鉴定范文
2013/10/27 职场文书
初中高效课堂实施方案
2014/02/26 职场文书
应届生求职自荐信
2014/07/04 职场文书
项目申报专员岗位职责
2014/07/09 职场文书
五好家庭事迹材料
2014/12/20 职场文书
2015年信息技术教研组工作总结
2015/07/22 职场文书
运动会运动员赞词
2015/07/22 职场文书
2016春季幼儿园大班开学寄语
2015/12/03 职场文书
员工试用期工作总结
2019/06/20 职场文书