错误分类
- 代码错误:这种错误浏览器会报错,可以根据错误类型去排错
- 逻辑错误:这种错误浏览器不会报错,但是可以使用断点进行调试排错
错误类型
- Uncaught Syntaxerror 语法错误:编写的代码不符合js编码规则
- Uncaught ReferenceError 引用错误:使用了没有定义的变量
- Uncaught TypeError 类型错误:提供的类型,不是JS所需要的
- Uncaught RangeError 范围错误:指定的范围不是JS要求的
常见错误分析
-
类型错误
example1 getElementsByClassName返回的是一个数组 改为bn[0]
example2 getElementsByClassName返回的是一个数组 改为div[0]
example3
example3 常见的一种是在渲染 UI 组件时对于状态的初始化操作不当,当你读取一个未定义的对象的属性或调用其方法时
-
引用错误
example1未定义的变量
调试方法
- 打断点,代码在断点处停止,但还没有执行到。
- 单步执行(step into):代码一步一步的执行
- 单步跳过(step over):跳出函数(不再函数内部执行)
- step out:直接跳出脚本
- paused 停止debugger
- 页面(控制台)报错,打断点或者是debugger,看程序是否能执行到断点处,分析原因:如果没有执行到说明方法函数或者是语句有问题,继续往上查找分析原因。
- 和后台对接,页面没有实现某个功能点,先看下(network)接口是否调用,以及上送的参数是否都有送到并且都是否有值。然后再看后台返回的数据或者后他返回的错误码是什么。
- console.log(‘打印变量’),console.dir(‘打印对象’),console.table(),alert()等
- console.trace()用来追踪函数的调用轨迹。
- console.time()和console.timeEnd(),用来显示代码的运行时间。
- 监视变量值的变化
此次案例代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script src="https://cdn.bootcss.com/jquery/3.5.0/jquery.min.js"></script>
</head>
<style type="text/css">
div{
width: 100px;
height: 100px;
background: pink;
}
</style>
<body>
<button type="button" id="bn" class="bn">show/hide</button>
<div class="div"></div>
<script type="text/javascript">
var bool = false
var bn = document.getElementsByClassName('bn')
bn[0].addEventListener('click',function(e){
bool = !bool
var div =document.getElementsByClassName('div')
if(bool){
div[0].style.display="none"
}else{
div[0].style.display="block"
}
})
// console.log(dog)
// var str = null
// console.log(str.slice(1,1))
// var obj={}
// console.log(obj.a.slice(1,1))
</script>
</body>
</html>