为什么这个switch语句失败了?

时间:2011-07-01 00:26:47

标签: javascript

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

我知道这是我有“&lt; 5”的部分。如何使它具有t.value小于5 ??

的情况

4 个答案:

答案 0 :(得分:4)

switch仅支持相等比较。

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

我不知道它是否适合您的具体情况,但您也可以这样做:

switch (t.value) {
    case 5:
    case 4:
    case 3:
    case 2:
    case 1:
        alert('hi');
        break;
}

答案 1 :(得分:3)

if语句似乎最适合此目的,但虽然我不推荐这样一个事实,即JavaScript可以让你切换任何数据类型(而不仅仅是数字/枚举某些语言)意味着你可以这样做:

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

以上情况应选择首先匹配的情况,并指出几个(如果不是全部)情况都可以为真。

在某种程度上,样式比if/else if的长序列更具可读性,但我不会在团队开发环境中使用它,因为它可能会混淆其他开发人员。

对于少于5个场景的另一个更常规的switch用法如下(假设您知道t.value可能的范围):

switch(t.value) {
   case 0:
   case 1:
   case 2:
   case 3:
   case 4:
      // do something
      break;
   case 5:
   // etc
}

答案 2 :(得分:2)

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

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

答案 3 :(得分:0)

默认:   if(t.value&lt; 5)    警报( '喜');
  打破; 也许这就是你想要的!