Switch Case 語句中的表達式求值
在程式設計中寫switch 語句時,您可能會遇到希望在case 子句中使用表達式的情況而不是固定值。雖然 if 語句很容易容納這類表達式,但在這種情況下,人們會擔心 switch 語句的潛在效率。
考慮以下 JavaScript 程式碼:
<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>
在此範例中,我們嘗試評估case 子句中的表達式。然而,我們面臨一個障礙,因為表達式只產生布林值,而我們要比較的金額值是一個數字。這種不匹配會導致 case 子句無法正確觸發。
一個可行的解決方案是採用替代語法:
<code class="javascript">switch (true) { case (amount >= 7500 && amount < 10000): // Code break; case (amount >= 10000 && amount < 15000): // Code break; // etc. }</code>
透過引入 true 標識符,我們有效地將表達式求值轉換為比較與布林值 true。當 case 子句中的表達式計算結果為 true 時,該子句中的程式碼將執行。
雖然這種技術看起來有點不傳統,但它規避了直接比較 case 子句中的表達式時遇到的限制。因此,您可以實現所需的行為,同時保持 switch 語句的效率優勢。
以上是可以在 JavaScript 的 Switch Case 語句中使用表達式嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!