语法错误
简单来说,语法错误就是不符合JS语法的错误。出现语法错误,控制台会进行报错并告知出错的行号(但行号不一定准确)。
常见的语法错误有:
- 符号漏打,多打,少打,错打
- 使用了不合语法的变量名
- 语句写错,没写完等
运行时错误
运行时错误(Runtime Error),指代码没有语法错误,而在运行的时候才发生的错误。运行时错误是一个统称。
常见的语法错误有:
- ReferenceError,变量引用异常触发
- TypeError,类型使用错误时触发
- RangeError,不太常见,一般会在递归爆栈时触发,即递归深度太深
一般来说递增最多1024层。
function foo(){
return foo();
}
foo(); //无限调用会爆掉
如何区分语法错误与运行时错误
对于新手来说,语法错误跟运行时错误在仅看代码的情况下不太容易区分。
一个简单的区分方法是:
- 语法错误无论如何都不可能运行成功
- 运行时错误是有可能运行成功的
逻辑错误
逻辑错误一般指的是计算结果不符合预期。
debugger;
//运行到此处暂停
watch可以添加需要监听的变量的值,每次变化就会显示出来。也可以改变值,比如加快循环次数
也可以添加判断,比如 num1<10,结果是true。
点击某一行前边的行数的时候,就可以加上一个断点
主动触发一个错误
对于前面的情况,可以主动触发一个错误
throw
语句
如果输入的两个不是数字,那么,返回“请输入两个数字。”
try…catch
try {
tryCode - 尝试执行代码块
}
catch(err) {
catchCode - 捕获错误的代码块
}
finally {
finallyCode - 无论 try / catch 结果如何都会执行的代码块
}
catch 和 finally 语句都是可选的,但你在使用 try 语句时必须至少使用一个。