2011-09-26 24 views
30

Có cách nào để chỉ định hai giá trị trường hợp khác nhau cho cùng một khối mã mà không cần sao chép và dán không? Ví dụ, dưới 68 và 40 nên thực thi cùng một mã, trong khi 30 không liên quan.Tuyên bố chuyển đổi Javascript: Có cách nào để hai trường hợp chạy cùng một mã không?

case 68: 
    //Do something 
break; 

case 40: 
    //Do the same thing 
break; 

case 30: 
    //Do something different 
break; 

Có phải không đúng khi nghĩ điều gì đó như thế này sẽ hoạt động (mặc dù rõ ràng là không)?

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

case 30: 
    //Do something else 
break; 

Trả lời

98

Chỉ cần đặt chúng ngay sau mỗi khác mà không cần nghỉ ngơi

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

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

Sonar tìm thấy điều này như là vô hiệu hóa, ¿một tùy chọn khác? –

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

Có, bạn chỉ cần đặt liên quan case báo cáo bên cạnh nhau, như thế này:

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

case 30: 
    // Do something different 
    break; 

Các bình luận Fallthrough là có vì hai lý do:

  • Nó trấn an người đọc của con người rằng bạn đang thực hiện điều này một cách có chủ ý
  • Nó im lặng cảnh báo từ các công cụ giống như Lint đưa ra các cảnh báo về khả năng có thể xảy ra.
+1

Tôi nghĩ bạn đã quên điều gì đó. :) – BNL

+0

@BNL: Rất tiếc! Bây giờ cố định - cảm ơn. – RichieHindle

0

Switch cases can be clubbed as shown in the dig.

Ngoài ra, Nó không giới hạn chỉ có hai trường hợp, bạn có thể mở rộng nó cho bất kỳ không. của các trường hợp.

+0

Trong khi liên kết này có thể trả lời câu hỏi, tốt hơn nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi – slfan

-3

Bạn nên sử dụng:

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

Các trường hợp nên bằng dấu phẩy.

+0

Điều này chỉ đơn giản là sai. Bạn không thể có nhiều giá trị trong trường hợp chuyển đổi –

Các vấn đề liên quan