下面这段js执行时,是先alert打印2,然后再alert 1. 也就是说先执行了finally,然后再return的,这样的执行顺序有没有什么应用场景?<!DOCTYPE html><html><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title></head><body> <script type="text/javascript">function Test() { var a = {b: 1} try { return a.b; } finally { a={b:2} alert('还执行'+a.b) }}alert(Test())</script></body></html>
4 回答
www说
TA贡献1775条经验 获得超8个赞
为什么先执行finally再执行try里面的return呢?
这个本身就是try...catch...finally结构的执行过程。
你可以这样理解,finally是在当前函数里面的,属于当前函数的范围,如果try里面真的返回了,则执行流程就已经跳出当前函数的范围了,那么当前函数里面的代码就不可能再执行到了。所以finally需要在try中的return真正返回之前执行,然后再返回。
大话西游666
TA贡献1817条经验 获得超14个赞
完整的结构是
try{
... //预期执行的,一般不会安排返回操作
}catch{
... //捕获错误执行的,如果没有捕获错误就不执行
}finally{
... //无论是否捕获错误都会执行的(除非try中有返回语句),一般用作一些清理工作
}
添加回答
举报
0/150
提交
取消
