Khi nào cần áp dụng fall through trong switch case

Chào cả nhà,

const day = 2;
switch(day) {
  case 2:
      console.log(2);
  case 4:
      console.log(4);
  case 6:
      console.log(6);
   break;
  default:
     console.log("error");
}

Các anh cho em hỏi:

  • Mặc dù case 2 không có break nhưng số 2 cũng đâu có match với 4 6 thì tại sao console.log(4);console.log(6); lại thực thi?
  • Trong thực tế có trường hợp nào cần phải fall through swtich case không? (dùng swtich case mà không có break)

P/S : em hỏi chung vậy thôi chứ không hỏi riêng ngôn ngữ nào, mặc dù javascript và C# viết được biểu thức logic trong switch case.

Em đã tham khảo 2 câu trả lời ở đây rồi ạ

Em cảm ơn!

Đây là do javascript quy định, không có break thì nó fallthrough xuống dưới và KHÔNG cần xét match case.

Có rất nhiều trường hợp như vậy. Tùy vào cách thiết kế của dev. Ví dụ:

const version= 3;
switch(version) {
  case 3:
      // Enable tính năng LTE
  case 2:
      // Enable tính năng Wifi
  ...

Phiên bản phần mềm 3 có thể dùng cả LTE và Wifi. Phiên bản 2 thì chỉ dùng được Wifi.Mình chỉ ví dụ hú họa vậy thôi.

Mỗi ngôn ngữ có quy định khác nhau cho switch case, bạn cần nêu rõ bạn đang hỏi ngôn ngữ nào.
Ví dụ C++ mặc định switch case là fallthrough trong khi Golang mặc định là không. Còn Scala thì cấm (không support) fallthrough.

P.S Nếu bạn không thực sự thích và “quen thuộc” thì mình khuyên KHÔNG nên thiết kế theo phong cách này.

7 Likes

Vậy switch case trong GoLang không cần sử dụng câu lệnh break luôn hả anh?
https://go.dev/tour/flowcontrol/9

1 Like

Thì trong link của bạn đã nói rõ rồi đó:

Go’s switch is like the one in C, C++, Java, JavaScript, and PHP, except that Go only runs the selected case, not all the cases that follow. In effect, the break statement that is needed at the end of each case in those languages is provided automatically in Go.

Do đó, trong Golang, nếu muốn fallthrough thì phải dùng từ khóa fallthrough

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?