Câu lệnh switch...case trong JS
Trong hướng dẫn này, bạn sẽ học cách sử dụng câu lệnh switch...case để kiểm tra hoặc đánh giá một biểu thức với các giá trị khác nhau trong JavaScript.
Sử dụng câu lệnh Switch...case
Câu lệnh switch..case là một thay thế cho câu lệnh if...else if...else , câu lệnh này thực hiện gần như tương tự. Câu lệnh switch...case kiểm tra một biến hoặc biểu thức dựa trên một loạt giá trị cho đến khi tìm thấy giá trị khớp, sau đó thực thi khối mã tương ứng với giá trị khớp đó. Cú pháp của nó là:
case value1:
// Code to be executed if x === value1
break;
case value2:
// Code to be executed if x === value2
break;
...
default:
// Code to be executed if x is different from all values
}
Xem xét ví dụ sau, hiển thị tên của ngày trong tuần.
Ví dụ
var d = new Date();
switch(d.getDay()) {
case 0:
alert("Today is Sunday.");
break;
case 1:
alert("Today is Monday.");
break;
case 2:
alert("Today is Tuesday.");
break;
case 3:
alert("Today is Wednesday.");
break;
case 4:
alert("Today is Thursday.");
break;
case 5:
alert("Today is Friday.");
break;
case 6:
alert("Today is Saturday.");
break;
default:
alert("No information available for that day.");
break;
}
Phương thức getDay()
trả về ngày trong tuần dưới dạng một số từ 0 và 6, trong đó 0 đại diện cho Chủ nhật. Xem chương ngày giờ trong JavaScript để tìm hiểu thêm về các phương thức ngày tháng.
Lưu ý: Trong câu lệnh switch...case , giá trị của biểu thức hoặc biến được so sánh với giá trị case bằng cách sử dụng toán tử đẳng thức nghiêm ngặt ( ===
). Điều đó có nghĩa là nếu x = "0"
, nó không khớp case 0:
, vì kiểu dữ liệu của chúng không bằng nhau.
Câu lệnh switch...case khác với câu lệnh if...else ở một điểm quan trọng. Câu lệnh chuyển đổi thực thi từng dòng một (tức là từng câu lệnh) và một khi JavaScript tìm thấy một mệnh đề case
có giá trị đúng, nó không chỉ thực thi mã tương ứng với mệnh đề trường hợp đó mà còn tự động thực thi tất cả các mệnh đề case
tiếp theo cho đến hết khối switch
.
Để ngăn chặn điều này, bạn phải bao gồm một câu lệnh break
sau mỗi câu lệnh case
(như bạn có thể thấy trong ví dụ trên). Câu lệnh break
yêu cầu trình thông dịch JavaScript thoát ra khỏi khối câu lệnh switch...case sau khi nó thực thi mã được liên kết với trường hợp đúng đầu tiên.
Tuy nhiên, câu lệnh break
không bắt buộc đối với mệnh đề case
hoặc default
, khi nó xuất hiện cuối cùng trong câu lệnh chuyển đổi. Mặc dù, một thực tiễn lập trình tốt là chấm dứt mệnh đề case
, hoặc cuối cùng default
trong câu lệnh switch với một break
. Nó ngăn ngừa lỗi lập trình có thể xảy ra sau này nếu một câu lệnh tình huống khác được thêm vào câu lệnh chuyển đổi.
Mệnh đề default
là tùy chọn, xác định các hành động sẽ được thực hiện nếu không khớp case
với biểu thức chuyển đổi. Mệnh đề default
không nhất thiết phải là mệnh đề cuối cùng xuất hiện trong câu lệnh chuyển đổi. Đây là một ví dụ, trong đó default
không phải là mệnh đề cuối cùng.
Ví dụ
var d = new Date();
switch(d.getDay()) {
default:
alert("Looking forward to the weekend.");
break;
case 6:
alert("Today is Saturday.");
break;
case 0:
alert("Today is Sunday.");
}
Nhiều trường hợp chia sẻ cùng một hành động
Mỗi giá trị trường hợp phải là duy nhất trong một câu lệnh chuyển đổi. Tuy nhiên, các trường hợp khác nhau không cần phải có một hành động duy nhất. Một số trường hợp có thể chia sẻ cùng một hành động, như được hiển thị ở đây:
Ví dụ
var d = new Date();
switch(d.getDay()) {
case 1:
case 2:
case 3:
case 4:
case 5:
alert("It is a weekday.");
break;
case 0:
case 6:
alert("It is a weekend day.");
break;
default:
alert("Enjoy every day of your life.");
}