javascript - switch case 语句中的表达式

标签 javascript switch-statement case

我正在尝试创建一个 switch 语句,但我似乎无法使用被评估的表达式(而不是一组字符串/整数)。我可以使用 if 语句轻松地做到这一点,但 case 应该会更快。

我正在尝试以下操作

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;
    }
}

我是不是遗漏了一些明显的东西,或者这是不可能的?在这种情况下,谷歌并不友好。

感谢任何帮助/指点

M

最佳答案

amount是一个数字,但是 case 中的表达式子句仅评估为 bool 值;值永远不会匹配。

你总能做到

switch (true) {
  case (amount >= 7500 && amount < 10000):
    // Code
    break;
  case (amount >= 10000 && amount < 15000):
    // Code
    break;
  // etc.
}

之所以有效,是因为匹配的值现在是 bool 值 true , 所以第一个case下的代码带有计算结果为 true 的表达式的子句将被执行。

我想这有点“棘手”,但我认为使用它没有任何问题。一个简单的ifelse语句可能会更简洁,而且您不必担心意外掉线。但无论如何它就在那里。

关于javascript - switch case 语句中的表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3463833/

相关文章:

mysql - mysql中使用CASE将行转换为列

sql - 基于两个表的select CASE语句

mysql - 如何在带有case语句的mysql中使用两个小数点

javascript - 如何在某个 div 中使用 jquery 添加附加路径到 img src?

javascript - Jquery 选择选项不适用于 switch 和 case

c - 如何回到C中的main()?

css - 移动和桌面 CSS 文件、cookie 以及两者之间的切换

javascript - javascript异步加载与jquery ajax(或getscript)异步加载的优缺点

javascript - javascript中两种原型(prototype)设置代码的区别

JavaScript "removeEventListener"不工作