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代码
Sep 07 Javascript
EditPlus注册码生成器(js代码实现)
Mar 25 Javascript
jquery实现从数组移除指定的值
Jun 24 Javascript
关于JS中的apply,call,bind的深入解析
Apr 05 Javascript
Bootstrap弹出框(modal)垂直居中的问题及解决方案详解
Jun 12 Javascript
js实现非常棒的弹出div
Oct 06 Javascript
JavaScript实现弹窗效果代码分析
Mar 09 Javascript
删除table表格行的实例讲解
Sep 21 Javascript
在vue中添加Echarts图表的基本使用教程
Nov 22 Javascript
如何在Vue.js中实现标签页组件详解
Jan 02 Javascript
js微信分享接口调用详解
Jul 23 Javascript
jQuery实现轮播图效果demo
Jan 11 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
解决中英文字符串长度问题函数
2007/01/16 PHP
解析PHP实现多进程并行执行脚本
2013/06/18 PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
2014/06/12 PHP
浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势
2017/11/08 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
2020/05/26 PHP
javascript当onmousedown、onmouseup、onclick同时应用于同一个标签节点Element
2010/01/05 Javascript
了解jQuery技巧来提高你的代码(个人觉得那个jquery的手册很不错)
2012/02/10 Javascript
Javascript自定义排序 node运行 实例
2013/06/05 Javascript
jQuery简单实现input文本框内灰色提示文本效果的方法
2015/12/02 Javascript
js添加千分位的实现代码(超简单)
2016/08/01 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
2016/08/19 Javascript
JS制作适用于手机和电脑的通知信息效果
2016/10/28 Javascript
很棒的一组js图片轮播特效
2017/01/12 Javascript
JavaScript中防止微信浏览器被整体拖动的方法
2017/08/25 Javascript
稍微学一下Vue的数据响应式(Vue2及Vue3区别)
2019/11/21 Javascript
JavaScript中变量提升和函数提升的详解
2020/08/07 Javascript
详解JavaScript中的this指向问题
2021/02/05 Javascript
[45:40]Ti4 冒泡赛第二天NEWBEE vs NaVi 1
2014/07/15 DOTA
[06:24]DOTA2 2015国际邀请赛中国区预选赛第二日TOP10
2015/05/27 DOTA
PHP webshell检查工具 python实现代码
2009/09/15 Python
Python之str操作方法(详解)
2017/06/19 Python
用Python逐行分析文件方法
2019/01/28 Python
Python multiprocessing多进程原理与应用示例
2019/02/28 Python
python实现随机漫步方法和原理
2019/06/10 Python
python+openCV调用摄像头拍摄和处理图片的实现
2019/08/06 Python
python定时任务 sched模块用法实例
2019/11/04 Python
基于python实现模拟数据结构模型
2020/06/12 Python
详解Pytorch显存动态分配规律探索
2020/11/17 Python
基于Python实现天天酷跑功能
2021/01/06 Python
HTML5实现应用程序缓存(Application Cache)
2020/06/16 HTML / CSS
香港时装购物网站:ZALORA香港
2017/04/23 全球购物
交通事故检查书范文
2014/01/30 职场文书
师说教学反思
2014/02/07 职场文书
护理专业求职信
2014/06/15 职场文书
法学专业毕业实习自我鉴定2014
2014/09/27 职场文书
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
2021/04/03 Python