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 相关文章推荐
可拖动窗口,附带鼠标控制渐变透明,开启关闭功能
Jun 26 Javascript
Javascript中eval函数的使用方法与示例
Apr 09 Javascript
禁用JavaScript控制台调试的方法
Mar 07 Javascript
用简洁的jQuery方法toggleClass实现隔行换色
Oct 22 Javascript
js实现input密码框提示信息的方法(附html5实现方法)
Jan 14 Javascript
BootStrap与validator 使用笔记(JAVA SpringMVC实现)
Sep 21 Javascript
微信小程序 支付后台java实现实例
May 09 Javascript
Jquery中attr与prop的区别详解
May 27 jQuery
详解webpack+vue-cli项目打包技巧
Jun 17 Javascript
Node.js 中使用 async 函数的方法
Nov 20 Javascript
微信小程序模板(template)使用详解
Jan 31 Javascript
jquery实现拖拽添加元素功能
Dec 01 jQuery
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
人族 TERRAN 概述
2020/03/14 星际争霸
php启动时候提示PHP startup的解决方法
2013/05/07 PHP
解决PHP超大文件下载,断点续传下载的方法详解
2013/06/06 PHP
两种php给图片加水印的实现代码
2020/04/18 PHP
PHP MSSQL 分页实例
2016/04/13 PHP
javascript之锁定表格栏位
2007/06/29 Javascript
innerHTML与jquery里的html()区别介绍
2012/10/12 Javascript
使用JavaScript构建JSON格式字符串实现步骤
2013/03/22 Javascript
图片延迟加载的实现代码(模仿懒惰)
2013/03/29 Javascript
JS中三目运算符和if else的区别分析与示例
2014/11/21 Javascript
JQuery中ajax方法访问web服务实例
2015/07/18 Javascript
js+html5实现的自由落体运动效果代码
2016/01/28 Javascript
分享JS数组求和与求最大值的方法
2016/08/11 Javascript
浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法
2016/11/29 Javascript
详解JS中的快速排序与冒泡
2017/01/10 Javascript
Vue press 支持图片放大功能的实例代码
2018/11/09 Javascript
[01:00:54]TI4正赛第二日开场
2014/07/20 DOTA
利用Python中的输入和输出功能进行读取和写入的教程
2015/04/14 Python
Python中urllib+urllib2+cookielib模块编写爬虫实战
2016/01/20 Python
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
2017/05/03 Python
python 字符串转列表 list 出现\ufeff的解决方法
2017/06/22 Python
python实现kMeans算法
2017/12/21 Python
使用python获取(宜宾市地震信息)地震信息
2019/06/20 Python
python每5分钟从kafka中提取数据的例子
2019/12/23 Python
使用python无账号无限制获取企查查信息的实例代码
2020/04/17 Python
CSS3实现伪类hover离开时平滑过渡效果示例
2017/08/10 HTML / CSS
浅谈移动端网页图片预加载方案
2018/11/05 HTML / CSS
英国网上香水店:Fragrance Direct
2016/07/20 全球购物
澳大利亚音乐商店:Bava’s Music City
2019/05/05 全球购物
为女性购买传统的印度服装和婚纱:Kalkifashion
2019/07/22 全球购物
某个公司的Java笔面试题
2016/03/11 面试题
中专三年学习的个人自我评价
2013/12/12 职场文书
园艺师求职信
2014/03/10 职场文书
疾病捐款倡议书
2014/05/13 职场文书
盗窃罪辩护词范文
2015/05/21 职场文书
共青团优秀团员申请书(范文)
2019/08/15 职场文书