Ausdrucksauswertung in Switch-Case-Anweisungen
In JavaScript wertet die Switch-Anweisung einen einzelnen Ausdruck anhand einer Reihe konstanter Ausdrücke aus. Der Versuch, Ausdrücke innerhalb der Case-Klauseln zu verwenden, kann jedoch zu unerwartetem Verhalten führen, wie im bereitgestellten Codeausschnitt gezeigt.
Das Ziel besteht darin, eine Switch-Anweisung zu verwenden, um eine Belohnung basierend auf dem Wert der Betragsvariablen zu bestimmen . Es wird versucht, einen Ausdruck auszuwerten, wie in den case-Klauseln zu sehen ist:
<code class="javascript">case (amount >= 7500 && amount < 10000): // ... case (amount >= 10000 && amount < 15000): // ...
Leider werden diese Ausdrücke als boolesche Werte (wahr oder falsch) ausgewertet, anstatt mit den numerischen Werten von amount abzugleichen. Daher wird die switch-Anweisung niemals in einen der Fälle eintreten.
Um dieses Problem zu beheben, besteht eine mögliche Lösung darin, den wahren Ausdruck als Fallwert zu verwenden und den Ausdruck innerhalb der Fallklausel wie folgt auszuwerten :
<code class="javascript">switch (true) { case (amount >= 7500 && amount < 10000): // ... break; case (amount >= 10000 && amount < 15000): // ... break; }</code>
Dieser Ansatz funktioniert, weil der Case-Wert jetzt der boolesche Wert true ist und der Ausdruck in der Case-Klausel einen booleschen Wert ergibt.
Das obige ist der detaillierte Inhalt vonWarum funktionieren Ausdrücke in Switch-Case-Anweisungen in JavaScript nicht wie erwartet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!