调试技术
大多数浏览器都有
console对象,用于向JavaScript控制台写入消息;error(msg)info(msg)log(msg)warn(msg);冷知识:部分浏览器支持使用
LiveConnect-- 在JavaScript中运行Java代码:java.lang.System.out.println('Your message'); // 效果等同 console.log() 或 opera.postError()log函数多浏览器兼容封装function log(msg) { if (typeof console == 'object') { console.log(msg); } else if (typeof opera == 'object') { opera.postError(msg); } else if (typeof java == 'object' && typeof java.lang == 'object'){ java.lang.System.out.println(msg); } }另一输出调试的方法:在页面开辟一小块区域,用于显示调试消息(方便用于不支持
JavaScript控制台的浏览器)function log(msg) { var console = document.getElementById('debuginfo'); if (console === null) { console = document.createElement('div'); console.id = 'debuginfo'; console.style.background = '#dedede'; console.style.border = '1px solid sliver'; 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>' + msg + '</p>'; }在运行函数之前,为了达到理想的效果要对传入的参数进行检查,如不符合要求时要主动抛出错误信息;
抛出自定义错误的
assert()函数封装(大型库比较常见):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; }