Javascript switch语句:有两种方法可以运行相同的代码吗?

nip*_*ese 60 javascript switch-statement

有没有办法将两个不同的大小写值分配给同一个代码块而无需复制和粘贴?例如,低于68和40应执行相同的代码,而30则不相关.

case 68:
   //Do something
break;

case 40:
   //Do the same thing
break;

case 30:
   //Do something different
break;
Run Code Online (Sandbox Code Playgroud)

认为这样的事情应该有效是不正确的(即使它显然没有)?

case 68 || 40:
   //Do something
break;

case 30:
   //Do something else
break;
Run Code Online (Sandbox Code Playgroud)

kla*_*her 165

只是把它们放在一起,不间断

switch (myVar) {
  case 68:
  case 40:
    // Do stuff
  break;

  case 30:
    // Do stuff
  break;
}
Run Code Online (Sandbox Code Playgroud)


Ric*_*dle 19

是的,你只需将相关的case陈述放在一起,就像这样:

case 40:  // Fallthrough
case 68:
   // Do something
   break;

case 30:
   // Do something different
   break;
Run Code Online (Sandbox Code Playgroud)

Fallthrough评论是有两个原因:

  • 它让人类读者放心,你是故意这样做的
  • 它使类似Lint的工具发出警告,警告可能发生意外坠落.


BNL*_*BNL 5

case 68:
case 40:
  // stuff
  break;
Run Code Online (Sandbox Code Playgroud)


Abr*_*ham 5

更干净的方法来做到这一点

if ([68, 48, 22, 53].indexOf(value) > -1)
    //Do something
else if ([44, 1, 0, 24, 22].indexOf(value) > -1)
    //Do another
Run Code Online (Sandbox Code Playgroud)

您可以对具有相同结果的多个值执行此操作