关于Javascript中try catch finally代码执行的问题

## 问题

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)

```

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容