记住使用哪个日志方法(原生的console.log()和自定义的log()方法),对开发者来说是一种负
担。因为console 是一个全局对象,所以可以为这个对象添加方法,也可以用自定义的函数重写已有
的方法,这样无论在哪里用到的日志打印方法,都会按照自定义的方式行事。
比如,可以这样重新定义console.log 函数:
// 把所有参数拼接为一个字符串,然后打印出结果
console.log = function() {
// ‘arguments’并没有join 方法,这里先把它转换为数组
const args = Array.prototype.slice.call(arguments);
console.log(args.join(’, '));
}
这样,其他代码调用的将是这个函数,而不是通用的日志方法。这样的修改在页面刷新后会失效,
因此只是调试或拦截日志的一个有用而轻量的策略。
抛出错误
如前所述,抛出错误是调试代码的很好方式。如果错误消息足够具体,只要看一眼错误就可以确定
原因。好的错误消息包含关于错误原因的确切信息,因此可以减少额外调试的工作量。比如下面的函数:
function divide(num1, num2) {
return num1 / num2;
}
这个简单的函数执行两个数的除法,但如果任何一个参数不是数值,则返回NaN。当Web 应用程序
意外返回NaN 时,简单的计算可能就会出问题。此时,可以检查每个参数的类型是不是数值,然后再进
行计算。来看下面的例子:
function divide(num1, num2) {
if (typeof num1 != “number” || typeof num2 != “number”){
throw new Error(“divide(): Both arguments must be numbers.”);
}
return num1 / num2;
}
这里,任何一个参数不是数值都会抛出错误。错误消息中包含函数名和错误的具体原因。当浏览器
报告这个错误消息时,你立即就能根据它包含的信息定位到问题,包括问题的解决方案。相对于没那么
具体的浏览器错误消息,这个错误消息显示更有价值。
在大型应用程序中,自定义错误通常使用assert()函数抛出错误。这个函数接收一个应该为true
的条件,并在条件为false 时抛出错误。下面是一个基本的assert()函数:
function assert(condition, message) {
if (!condition) {
throw new Error(message);
}
}
这个assert()函数可用于代替多个if 语句,同时也是记录错误的好地方。下面的代码演示了如
何使用它:
function divide(num1, num2) {
assert(typeof num1 == “number” && typeof num2 == “number”,
“divide(): Both arguments must be numbers.”);
return num1 / num2;
}
相比于之前的例子,使用assert()函数可以减少抛出自定义错误所需的代码量,并且让代码更好
理解。
javascript基础从小白到高手系列一千九百零三:补充控制台方法
转载请注明出处或者链接地址:https://www.qianduange.cn//article/23481.html
发布的文章
Spring Boot面试问答
2025-03-13 15:03:01
vue左侧边框点击后让字体高亮
2025-03-13 15:03:01
刚刚!微调 DeepSeek 满血版正式开源。。。
2025-03-13 15:03:58
vue调整表格样式之深度修改
2025-03-13 15:03:57
vuejs 组件基础 路由
2025-03-13 15:03:57
STM32之I2C硬件外设
2025-03-13 15:03:51
【Spring Data】
2025-03-13 15:03:51
大学至今的反思与总结
2025-03-13 15:03:50
解锁DeepSpeek-R1大模型微调:从训练到部署,打造定制化AI会话系统
2025-03-13 15:03:50
2024华为OD机试真题-日志排序(C /Java/Python)-E卷-100分
2025-03-13 15:03:50
大家推荐的文章