JavaScript では、switch ステートメントは、値が所定の定数と等しいかどうかに基づいて条件付き実行を容易にします。ただし、代わりに実行時に評価される動的式を利用したい場合はどうすればよいでしょうか?
提供されているコード スニペットは、switch case で式を利用しようとしています:
<code class="javascript">function reward(amount) { var $reward = $("#reward"); switch (amount) { case (amount >= 7500 && amount < 10000): $reward.text("Play Station 3"); break; case (amount >= 10000 && amount < 15000): $reward.text("XBOX 360"); break; case (amount >= 15000): $reward.text("iMac"); break; default: $reward.text("No reward"); break; } }</code>
残念ながら、このアプローチは機能しません。予想通り。その理由は、switch ステートメントの性質にあります。各 case 式は、条件が true か false かを示すブール値を返します。指定されたコードでは、式は目的の定数値ではなく、true または false に評価されます。
この問題に対処するには、switch ステートメントが定数のブール値 (この例では true) に評価されるトリックを使用できます。 case) を使用し、case ステートメント内の式を使用して実行フローを制御します:
<code class="javascript">switch (true) { case (amount >= 7500 && amount < 10000): // Code break; case (amount >= 10000 && amount < 15000): // Code break; // etc. }</code>
この回避策では、switch case 内の式の評価が可能になりますが、潜在的な欠点がいくつか発生します。まず、常に true に評価する必要がありますが、これはシナリオによっては不必要または望ましくない場合があります。次に、コードの簡潔さが失われ、より混乱が生じる可能性があります。
別のアプローチは、動的な式を評価し、対応するコード ブロックを実行するより簡単な方法を提供する if-else ステートメントを利用することです。回避策の switch ステートメントを使用するか、if-else ステートメントを使用するかの選択は、アプリケーションの特定の要件によって異なります。
以上がJavaScript の Switch Case ステートメントで式を使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。