首先執行try,如果有異常執行catch,無論如何都會執行finally
一個函數中一定會執行finally中的部分。
關於一個函數的執行過程是,當有return以後,函數就會把這個資料儲存在某個位置,然後告訴主函數,我不執行了,接下來你執行吧,所以函數就會推出。
但是當一個函數中出現finally以後,finally永遠都要執行,所以,就算try或者catch中已經執行了return了,但是這時函數不會退出,不會告訴主函數去執行,而是等待finally執行完了才回去告訴主函數去執行,這時候如果finally中出現了return的話,這次return的值就會覆蓋掉try或者catch中的值,然後才會告訴主函數:我不執行了,你去執行吧。所以主函數會得到finally中的回傳值。也就是說子函數的回傳值永遠是finally中的回傳值(只要被呼叫的函數中有值)