ホームページ >ウェブフロントエンド >jsチュートリアル >Case ステートメントで中括弧がアロー関数を壊すのはなぜですか?
矢印関数の中括弧: 解明されたパズル
ダン・アブラモフの講義では、興味深い質問が生じます。なぜ中括弧が関数を引き起こすのかということです。テストに失敗するには?この謎を調べてみましょう。
問題のコードは、case ステートメント内のアロー関数です。
case 'toggleTodo' : return ( state.map( (one) => { oneTodo( one, action ) }) );
中括弧 { } が含まれる場合、テストは失敗します。 。ただし、これらを省略しても、コードは問題なく動作します。内部で何が起こっているかを次に示します。
中括弧の威力: ブロックと明示的な戻り値
関数の本体を中括弧で囲むと、ブロック。ブロックには複数のステートメントを含めることができ、それぞれのステートメントはセミコロンで終わります。ブロックから値を返したい場合は、return ステートメントを明示的に使用する必要があります。
中括弧付きのアロー関数の場合、本体はへの呼び出しのみで構成されます。oneTodo()。明示的な return ステートメントがないため、関数は unknown を返します。この予期しない動作により、テストが失敗します。
これを修正するには、oneTodo() 呼び出しの結果を明示的に返す必要があります:
(one) => { return oneTodo(one, action); }
簡潔な本文: わかりやすくするために中括弧を省略
中括弧で囲まれた場合、アロー関数には簡潔な本体 があります。簡潔な本体は 1 つの式で構成され、その結果は暗黙的に返されます。
中括弧のない例では、簡潔な本体は次のとおりです。(one) => oneTodo( one, action )この式は次と同等です。
return oneTodo( one, action );中括弧を省略すると、明示的な記述を必要とせずに同じ結果が得られます。
return ステートメント。
違いを理解する
重要なポイントは、ブロック (で示される) の違いを理解することです。中括弧) と 簡潔な本体 (中括弧がないことで示されます)括弧)。ブロックには明示的な return ステートメントが必要ですが、簡潔な本体は単一の式の結果を暗黙的に返します。
そのため、case ステートメントでアロー関数を使用する場合は、中括弧と明示的な returnステートメントを使用します。必要な式が 1 つだけの場合は、中括弧を省略して簡潔な本文を作成できます。
以上がCase ステートメントで中括弧がアロー関数を壊すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。