## 问题
1. try catch finally中return 最终会返回谁的结果
2. finally 中的代码是在 return之前执行,还是之后执行
先回答第2个问题,finally会在return 之前
第1个问题的答案是最终返回 finally的结果
分析下:
第一个答案的返回finally的结果,初看是finally有return, try catch的return 被fianlly覆盖了,但是通过代码的执行顺序,是finally在return之前执行,所以在finally执行了return 之后, try catch中的return 没有执行最终得到 finally的return。
最后贴上测试代码
```
function test() {
try {
let i = 9
let result = i/0
console.log('normal exec')
return 'Hello try'
} catch (e) {
console.log('catch exec')
throw new Error('set exception')
return 'Hello catch'
}finally {
console.log('finall exec')
// return 'Hello finally'
}
}
let result = test()
console.log('result', result)
```