2011-09-26 80 views
30

有沒有辦法將兩個不同的案例值分配給同一代碼塊而無需複製和粘貼?例如,低於68和40應執行相同的代碼,而30不相關。Javascript switch語句:有兩種情況可以運行相同的代碼嗎?

case 68: 
    //Do something 
break; 

case 40: 
    //Do the same thing 
break; 

case 30: 
    //Do something different 
break; 

想想像這樣的東西應該工作(即使它顯然不)是不正確的?

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

case 30: 
    //Do something else 
break; 

回答

98

就把它們之後對方沒有休息

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

    case 30: 
    // Do stuff 
    break; 
} 
+0

聲納認爲這是無創的,另一種選擇? –

2
case 68: 
case 40: 
    // stuff 
    break; 
16

是的,你只要把相關的case報表彼此相鄰,就像這樣:

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

case 30: 
    // Do something different 
    break; 

Fallthrough評論是有兩個原因:

  • 它向人類讀者保證你正在故意這樣做
  • 它可防止類似皮棉工具發出的警告提醒您可能意外泄漏。
+1

我覺得你忘了一些東西。 :) – BNL

+0

@BNL:哎呀!現在修好了 - 謝謝。 – RichieHindle

0

Switch cases can be clubbed as shown in the dig.

而且,它不僅僅限於兩種情況,您可以將其擴展到任何沒有。的情況。

+0

雖然這個鏈接可能回答這個問題,但最好在這裏包含答案的基本部分,並提供供參考的鏈接。如果鏈接頁面發生變化,僅鏈接答案可能會失效 – slfan

-3

你應該使用:

switch condition { 
    case 1,2,3: 
    // do something 
    case 4,5: 
    // do something 
    default: 
    // do something 
} 

病例應以逗號分隔。

+0

這完全是錯誤的。開關盒中不能有多個值 –

相關問題