Thứ hai, 11/09/2017 | 00:00 GMT+7

Cách sử dụng câu lệnh Switch trong JavaScript

Câu lệnh điều kiện là một trong những tính năng hữu ích và phổ biến nhất của tất cả các ngôn ngữ lập trình. “ Cách viết câu lệnh có điều kiện trong JavaScript ” mô tả cách sử dụng các từ khóa if , elseelse if để kiểm soát stream chương trình dựa trên các điều kiện khác nhau, trong JavaScript thường là kết quả của user nhập.

Ngoài if...else , JavaScript có một tính năng được gọi là câu lệnh switch . switch là một loại câu lệnh điều kiện sẽ đánh giá một biểu thức dựa trên nhiều trường hợp có thể xảy ra và thực thi một hoặc nhiều khối mã dựa trên các trường hợp khớp. Câu lệnh switch có liên quan chặt chẽ đến một câu lệnh điều kiện chứa nhiều khối else if và chúng thường được dùng thay thế cho nhau.

Trong hướng dẫn này, ta sẽ học cách sử dụng switch tuyên bố, cũng như cách sử dụng các từ khóa liên quan case , break , và default . Cuối cùng, ta sẽ xem xét cách sử dụng nhiều trường hợp trong một câu lệnh switch .

Lựa chọn điện

Câu lệnh switch đánh giá một biểu thức và thực thi mã do kết quả của một trường hợp phù hợp. Lúc đầu, nó có thể nhìn một chút đáng sợ, nhưng cú pháp cơ bản là tương tự như của một if tuyên bố. Nó sẽ luôn được viết bằng switch () {} , với dấu ngoặc đơn chứa biểu thức cần kiểm tra và dấu ngoặc nhọn chứa mã tiềm năng để thực thi.

Dưới đây là một ví dụ về một câu lệnh switch với hai câu lệnh case và một dự phòng được gọi là default .

switch (expression) {     case x:         // execute case x code block         break;     case y:         // execute case y code block         break;     default:         // execute default code block } 

Theo logic của khối mã ở trên, đây là chuỗi các sự kiện sẽ diễn ra.

  • Biểu thức được đánh giá
  • case đầu tiên, x , sẽ được kiểm tra dựa trên biểu thức. Nếu nó khớp, mã sẽ thực thi và từ khóa break sẽ kết thúc khối switch .
  • Nếu nó không khớp, x sẽ bị bỏ qua và trường hợp y sẽ được kiểm tra dựa trên biểu thức. Nếu y trùng với biểu thức, mã sẽ thực thi và thoát ra khỏi khối switch .
  • Nếu không có trường hợp nào phù hợp, khối mã default sẽ chạy.

Hãy làm một ví dụ hoạt động của câu lệnh switch theo cú pháp trên. Trong khối mã này, ta sẽ tìm ngày hiện tại trong tuần bằng phương thức new Date() , và getDay() để in ra một số tương ứng với ngày hiện tại. 1 là viết tắt của thứ Hai, từ 7 đến 7 là viết tắt của Chủ nhật. Ta sẽ bắt đầu bằng cách cài đặt biến của ta .

const day = new Date().getDay(); 

Sử dụng switch , ta sẽ gửi tin nhắn đến console mỗi ngày trong tuần. Chương trình sẽ chạy theo thứ tự từ trên xuống dưới để tìm kiếm một kết quả phù hợp và khi tìm thấy một kết quả phù hợp, lệnh break sẽ ngăn khối switch tiếp tục đánh giá các câu lệnh.

tuần.js
// Set the current day of the week to a variable, with 1 being Monday and 7 being Sunday const day = new Date().getDay();  switch (day) {     case 1:         console.log("Happy Monday!");         break;     case 2:         console.log("It's Tuesday. You got this!");         break;     case 3:         console.log("Hump day already!");         break;     case 4:         console.log("Just one more day 'til the weekend!");         break;     case 5:         console.log("Happy Friday!");         break;     case 6:         console.log("Have a wonderful Saturday!");         break;     case 7:         console.log("It's Sunday, time to relax!");         break;     default:         console.log("Something went horribly wrong..."); } 
Output
'Just one more day 'til the weekend!'

Mã này đã được thử nghiệm vào thứ Năm, tương ứng với 4 , do đó, kết quả kết quả của console Just one more day 'til the weekend! . Tùy thuộc vào ngày nào trong tuần bạn đang kiểm tra mã, kết quả kết quả của bạn sẽ khác nhau. Ta đã bao gồm một khối default ở cuối để chạy trong trường hợp xảy ra lỗi, trong trường hợp này sẽ không xảy ra vì chỉ có 7 ngày trong tuần. Ví dụ, ta cũng có thể có kết quả được in từ Thứ Hai đến Thứ Sáu và khối default có thể có cùng một thông báo cho cuối tuần.

Nếu ta đã bỏ qua từ khóa break trong mỗi câu lệnh, không câu lệnh case khác sẽ được đánh giá là true, nhưng chương trình sẽ tiếp tục kiểm tra cho đến khi kết thúc. Để làm cho các chương trình của ta nhanh hơn và hiệu quả hơn, ta bao gồm thời break .

Chuyển phạm vi

Có thể có trường hợp bạn cần đánh giá một loạt giá trị trong một khối switch , trái ngược với một giá trị đơn lẻ như trong ví dụ của ta ở trên. Ta có thể làm điều này bằng cách đặt biểu thức của ta thành true và thực hiện một phép toán trong mỗi câu lệnh case .

Để làm cho điều này dễ hiểu hơn, ta sẽ sử dụng một ví dụ quen thuộc. Trong hướng dẫn về câu lệnh điều kiện , ta đã tạo một ứng dụng chấm điểm đơn giản sẽ lấy điểm số và chuyển nó thành điểm chữ cái, với các yêu cầu sau.

  • Điểm 90 trở lên là A
  • Hạng 80 đến 89 là hạng B
  • Hạng 70 đến 79 là điểm C
  • Hạng 60 đến 69 là hạng D
  • Điểm 59 trở xuống là điểm F

Bây giờ ta có thể viết nó dưới dạng một câu lệnh switch . Vì ta đang kiểm tra một dải ô, ta sẽ thực hiện thao tác trong từng case để kiểm tra xem mỗi biểu thức có được đánh giá là true sau đó thoát ra khỏi câu lệnh khi các yêu cầu đối với true đã được thỏa mãn.

điểm.js
// Set the student's grade const grade = 87;  switch (true) {     // If score is 90 or greater     case grade >= 90:         console.log("A");         break;     // If score is 80 or greater     case grade >= 80:         console.log("B");         break;     // If score is 70 or greater     case grade >= 70:         console.log("C");         break;     // If score is 60 or greater     case grade >= 60:         console.log("D");         break;     // Anything 59 or below is failing     default:         console.log("F"); } 
Output
'B'

Biểu thức trong dấu ngoặc đơn được đánh giá là true trong ví dụ này. Điều này nghĩa là bất kỳ case nào đánh giá là true sẽ là một kết quả phù hợp.

Cũng giống như với else if , switch được đánh giá từ trên xuống dưới và kết quả khớp đúng đầu tiên sẽ được chấp nhận. Do đó, mặc dù biến grade của ta là 87 và do đó cũng đánh giá là true cho C và D, kết quả phù hợp đầu tiên là B, sẽ là kết quả kết quả .

Nhiều trường hợp

Bạn có thể gặp mã trong đó nhiều case s có cùng kết quả . Để thực hiện điều này, bạn có thể sử dụng nhiều case cho mỗi khối mã.

Để kiểm tra điều này, ta sẽ tạo một ứng dụng nhỏ khớp tháng hiện tại với mùa thích hợp. Đầu tiên, ta sẽ sử dụng phương thức new Date() để tìm một số tương ứng với tháng hiện tại và áp dụng nó cho biến month .

const month = new Date().getMonth(); 

Phương new Date().getMonth() mới sẽ xuất ra một số từ 0 đến 11 , với 0 là tháng Giêng và 11 là tháng Mười Hai. Tại thời điểm xuất bản này, tháng là tháng 9, tương ứng với 8 .

Ứng dụng của ta sẽ xuất ra bốn mùa với các thông số kỹ thuật sau cho đơn giản:

  • Mùa đông : tháng Giêng, tháng Hai và tháng Ba
  • Mùa xuân : Tháng 4, 5 và 6
  • Mùa hè : Tháng 7, 8 và 9
  • Mùa thu : Tháng 10, 11 và 12

Dưới đây là mã của ta .

season.js
 // Get number corresponding to the current month, with 0 being January and 11 being December const month = new Date().getMonth();  switch (month) {     // January, February, March     case 0:     case 1:     case 2:         console.log("Winter");         break;     // April, May, June     case 3:     case 4:     case 5:         console.log("Spring");         break;     // July, August, September     case 6:     case 7:     case 8:         console.log("Summer");         break;     // October, November, December     case 9:     case 10:     case 11:         console.log("Autumn");         break;     default:         console.log("Something went wrong."); } 

Khi ta chạy mã, ta sẽ nhận được kết quả xác định mùa hiện tại dựa trên các thông số kỹ thuật ở trên.

Output
Summer

Tháng hiện tại tại thời điểm xuất bản là 8 , tương ứng với một trong các báo cáo case với sản lượng mùa "Summer" .

Kết luận

Trong bài viết này, ta đã xem xét câu lệnh switch , một loại câu lệnh điều kiện đánh giá một biểu thức và xuất ra các giá trị khác nhau dựa trên kết quả khớp. Ta đã xem xét các câu lệnh switch bằng cách sử dụng một dải ô và nhiều câu lệnh case .

Để tìm hiểu thêm về switch , bạn có thể xem lại trên Mạng nhà phát triển Mozilla .


Tags:

Các tin liên quan

Cách viết các câu lệnh có điều kiện trong JavaScript
2017-08-29
Hiểu các đối tượng trong JavaScript
2017-08-24
Cách sử dụng phương thức mảng trong JavaScript: Phương thức lặp lại
2017-08-15
Cách chuyển đổi kiểu dữ liệu trong JavaScript
2017-08-15
Cách sử dụng các phương thức mảng trong JavaScript: Phương thức Accessor
2017-08-14
Cách sử dụng phương thức mảng trong JavaScript: Phương thức đột biến
2017-08-10
Cách viết chương trình JavaScript đầu tiên của bạn
2017-08-02
Hiểu mảng trong JavaScript
2017-07-28
Làm thế nào để làm toán trong JavaScript với các toán tử
2017-07-20
Cách lập chỉ mục, tách và thao tác chuỗi trong JavaScript
2017-07-14