【问题标题】:Switch < or > value case [duplicate]切换<或>值大小写[重复]
【发布时间】:2021-07-28 13:34:13
【问题描述】:

我只是想知道是否有办法让这种事情在 switch 语句中起作用,我知道在 else if 语句中很有可能,但我更喜欢使用 switch 语句,如下所示'已经附上了一段示例代码来说明我的意思......

let money = 42;

switch (money) {
  case < 10:
    console.log('You have $10 or less USD');
    break;
  case < 50:
    console.log('You have $50 or less USD');
    break;
  case < 100:
    console.log('You have $100 or less USD');
    break;
  default:
    console.log('You are rich! Over $100);
    break;
}

如果这按我想要的方式工作,它会打印“你有 50 美元或更少美元”,因为钱是 10。

提前致谢,Lachie。

【问题讨论】:

  • Review the syntax for switch。你写的不是使用switch的正确方法。你应该在这里改用if/else
  • 不适用于switch,没有。 switch 总是比较精确值。你必须去if(money&lt;10){ ... } else if(money &lt; 50) { ... } else if(money &lt; 100){ ... } else { ... }
  • 你可以让 switch 以这种方式工作,但是 if/else if 更有意义....

标签: javascript switch-statement


【解决方案1】:

实际上有一个很好的方法可以做到这一点,注意switch(true) 将评估每个表达式。 不总是可读的,但很高兴知道。

const money = 200;

switch (true) {
  case money < 10:
    console.log('You have $10 or less USD');
    break;
  case money < 50:
    console.log('You have $50 or less USD');
    break;
  case money < 100:
    console.log('You have $100 or less USD');
    break;
  default:
    console.log('You are rich! Over $100');
    break;
}

【讨论】:

  • 非常感谢!完美运行!
  • 因此在这种情况下,您必须始终将小数字保持在顶部
  • @SourabhSomani 是的,这是一个奇怪的实现,但这说明了这个概念。
【解决方案2】:

const run = (money) => {
  switch (true) {
    case money < 10:
      console.log('You have $10 or less USD');
      break;
    case money < 50:
      console.log('You have $50 or less USD');
      break;
    case money < 100:
      console.log('You have $100 or less USD');
      break;
    default:
      console.log('You are rich! Over $100');
      break;
  }
};

run(42);
run(55);
run(123);

您需要与您拥有的钱进行比较。

【讨论】:

    猜你喜欢
    • 2011-11-07
    • 2018-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-05
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多