1. ホーム
  2. javascript

[解決済み] なぜ `finally` の return は `try` よりも優先されるのですか?

2022-07-31 10:09:36

疑問点

try/catchブロック内のreturn文はどのように動作するのでしょうか?

function example() {
    try {
        return true;
    }
    finally {
        return false;
    }
}

この関数の出力として期待しているのは true であることを期待していますが、その代わりに false !

どのように解決するのですか?

最後に 常に は実行されます。これはそのためのもので、つまりその戻り値があなたのケースで使われることを意味します。

このようなコードになるように変更します。

function example() { 
    var returnState = false; // initialization value is really up to the design
    try { 
        returnState = true; 
    } 
    catch {
        returnState = false;
    }
    finally { 
        return returnState; 
    } 
} 

一般的に、関数の中で複数の return 文を持つことは望ましくありません。