Javascript 为什么这个switch语句失败? 开关(t值){ 例

Javascript 为什么这个switch语句失败? 开关(t值){ 例,javascript,Javascript,我知道这是我有“

我知道这是我有“<5”的部分。如何使其具有t.value小于5的情况???

开关仅支持相等比较

switch (t.value) {
    case < 5:
        alert('hi');
        break;
}

switch
语句不支持小于或大于比较(或除equals之外的任何内容)。使用:

if(t.值<5){
警报(“hi”);
}
默认值: 如果(t.值<5) 警报(“hi”)
打破
也许这是你想要的

一个
if
语句似乎最适合于此目的,但尽管我不建议使用它,但JavaScript将允许您切换任何数据类型(而不仅仅是数字/枚举,如某些语言),这意味着您可以这样做:

if (t.value < 5) {
    alert("hi");
}

为什么不能只使用一个普通的if语句呢?实际上,
switch
支持小于或其他布尔结果表达式(即使是函数调用),如果您“欺骗”并打开布尔值。看看我的答案。如果你打开一个布尔值,你可以“作弊”并使用你在
If/else If
结构中使用的所有类型的比较表达式。看我的答案。似乎没有任何理由喜欢这个而不是一连串的
,如果。。。否则,如果
,尤其是因为您必须记住要中断在每种情况之间。我确实说过我不推荐它。我当然不喜欢。实际上,除了为了学习,我从来没有这样做过。但我并不讨厌它。
switch (t.value) {
    case 5:
    case 4:
    case 3:
    case 2:
    case 1:
        alert('hi');
        break;
}
if (t.value < 5) {
    alert("hi");
}
switch(true) {
   case t.value < 5:
      // do something
      break;
   case t.value >= 112:
      // do something
      break;
   case someOtherVar == 17:
      // do something
      break;
   case x == 7:
   case y == "something":
   case z == -12:
   case a == b * c:
      // works with fallthrough
      break;
   case someFunc():
      // even works on a function call (someFunc() should return true/false)
      break;
   default:
      // whatever
      break;
}
switch(t.value) {
   case 0:
   case 1:
   case 2:
   case 3:
   case 4:
      // do something
      break;
   case 5:
   // etc
}