Câu lệnh switch
trong JavaScript được sử dụng để thực hiện các hành động khác nhau dựa trên các điều kiện khác nhau.
Dưới đây là giải thích về cách câu lệnh switch
hoạt động:
Cú pháp cơ bản:
switch (biểu_thức) {
case giá_trị1:
// Khối code được thực hiện nếu biểu_thức có giá trị là giá_trị1
break;
case giá_trị2:
// Khối code được thực hiện nếu biểu_thức có giá trị là giá_trị2
break;
default:
// Khối code được thực hiện nếu không có trường hợp nào trùng khớp
}
biểu_thức
được đánh giá một lần.- Giá trị của
biểu_thức
được so sánh với các giá trị của từngcase
. - Nếu có sự trùng khớp, khối code liên kết với
case
đó được thực hiện. - Nếu không có trùng khớp, khối code trong
default
sẽ được thực hiện (nếu có).
Ví dụ:
switch (new Date().getDay()) {
case 0:
day = "Sunday";
break;
case 1:
day = "Monday";
break;
case 2:
day = "Tuesday";
break;
case 3:
day = "Wednesday";
break;
case 4:
day = "Thursday";
break;
case 5:
day = "Friday";
break;
case 6:
day = "Saturday";
}
- Trong ví dụ này,
new Date().getDay()
trả về số thứ tự của ngày trong tuần (0 đến 6). - Dựa vào số này, khối code của
case
tương ứng được thực hiện.
Từ khóa break
:
Khi JavaScript gặpbreak
trong một khối case
, nó sẽ thoát khỏi khối switch
. Điều này ngăn chặn các khối case
sau nó khỏi việc thực hiện.
Nếu không có break
ở cuối mỗi case
, các khối case
sau cũng sẽ được thực hiện dù không có sự trùng khớp.
Câu lệnh default
:
Câu lệnh default
xác định khối code sẽ được thực hiện nếu không có case
nào trùng khớp với giá trị của biểu_thức
.
Chia sẻ code giữa các case
:
Đôi khi, chúng ta muốn nhiều case
chia sẻ cùng một khối code. Điều này có thể được thực hiện bằng cách liệt kê nhiều giá trị của case
cùng một khối code.
switch (new Date().getDay()) {
case 4:
case 5:
text = "Soon it is Weekend";
break;
case 0:
case 6:
text = "It is Weekend";
break;
default:
text = "Looking forward to the Weekend";
So sánh chặt chẽ (strict comparison):
- Các
case
trong câu lệnhswitch
sử dụng so sánh chặt chẽ (===
), nghĩa là giá trị và kiểu dữ liệu phải giống nhau. - Ví dụ: Trong trường hợp không có sự trùng khớp với
x
vì kiểu dữ liệu củax
là chuỗi (“0”), không phải số (0).