虽然用try catch 捕捉next错误很爽,但我们知道不管是try块中的代码还是catch块中的代码,都是无法让V8引擎进行任何优化的,不能优化的函数比优化的函数会慢上好几倍,
也就是说try和catch中的代码比外面的慢很多倍。但是如果是调用try catch块外面的函数就不会有这个问题了。
console.time(1)
try {
throw new Error()
} catch(e) {
for (var i = 0; i < 1000000000; i++) {
var p = i % 2
}
}
console.timeEnd(1)
// 取出来放在外面
console.time(2)
try {
throw new Error()
} catch(e) {
run()
}
console.timeEnd(2)
function run() {
for (var i = 0; i < 1000000000; i++) {
var p = i % 2
}
}
这段代码的的执行结果:
1: 7565ms
2: 1362ms
为何区别这么大呢, 求大神解释