ホームページ >ウェブフロントエンド >jsチュートリアル >Case ステートメントで中括弧がアロー関数を壊すのはなぜですか?

Case ステートメントで中括弧がアロー関数を壊すのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-11 03:06:11309ブラウズ

Why Do Curly Braces Break My Arrow Function in a Case Statement?

矢印関数の中括弧: 解明されたパズル

ダン・アブラモフの講義では、興味深い質問が生じます。なぜ中括弧が関数を引き起こすのかということです。テストに失敗するには?この謎を調べてみましょう。

問題のコードは、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。