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中文网其他相关文章!