Tìm hiểu về các câu lệnh rẽ nhánh else if và switch trong ngôn ngữ lập trình Javscript. Và khi nào thì sử dụng câu lệnh else if, khi nào thì dùng switch. Và khi nào sử dụng toán tử 3 ngôi?
Câu lệnh rẽ nhánh else if
Cho ví dụ
if (data === 1) {console.log(‘Bây giờ đang tháng 1’)} else if (data === 1) {console.log(‘Bây giờ đang tháng 2’)} else {console.log(‘Không biết tháng mấy’)}
Kết quả các trường hợp đặt biến data
Nếu đặt var data = 1
thì hàm trả về // Bây giờ đang tháng 1
Vì câu lệnh else if sẽ xét từ điều kiện đầu tiên data === 1 trước, nó thấy đúng nên trả về Bây giờ đang tháng 1 luôn, mà không cần xét đến các điều kiện rẽ nhánh tiếp theo phía sau.
Chỉ khi không tìm thấy điều kiện đúng, else if mới tìm tiếp điều kiện rẽ nhánh sau đó. Và chỉ cần tìm thấy ở điều kiện đúng ở đâu thì sẽ lấy luôn kết quả trong điều kiện đó, bỏ qua hết các lệnh rẽ nhánh phía sau.
Nhưng khi không tìm thấy bất kỳ điều kiện nào đúng, thì nó sẽ chạy vào câu lệnh else cuối cùng, như trường hợp sau:
Nếu đặt var data = 4
thì hàm trả về // Không biết tháng mấy
Javascript-else-if-switch-case-toan-tu-3-ngoi
Câu lệnh rẽ nhánh switch
Xét ví dụ sau, hãy thay đổi giá trị của biến data, case 1 – 3, và break để hiểu rõ câu lệnh rẽ nhánh ss hoạt động như thế nào.
var data = 2switch (data) {case 1:console.log(‘thực thi code trong case 1’)break // giúp thoát khỏi câu lệnh switch, không truy xuất rẽ nhánh xuống nữa.case 2:console.log(‘thực thi code trong case 2’)breakcase 3:console.log(‘thực thi code trong case 3’)breakdefault:console.log(‘thực thi code trong default’)}
Khái quát câu lệnh switch case hoạt động như sau:
switch trên có 3 case (1, 2, 3)
case 1, case 2, case 3 là phép so sánh chính xác thứ tự case === 1, case === 2, case === 3
break sau mỗi case là chức năng tùy chọn: có hoặc không tùy ý
Khi đã tìm thấy case phù hợp (case === data), break trong case đó giúp thoát lệnh switch không chạy rẽ nhánh phía sau nữa, cho dù vẫn còn case === data ở nhánh sau đi nữa.
Nhưng nếu chưa tìm thấy case === data (tức case !== data), thì lệnh switch bỏ qua case khác đó, truy vấn tiếp đến nhánh sau.
Nếu không có case nào === data, thì lệnh switch sẽ thực thi code bên trong default:
+ Trường hợp không có break trong case nào
- Nếu data === case nào, thì case đó và tất cả các case sau (dù khác data đi nữa), và default đều được truy xuất và thực thi mã code bên trong. Nhưng nếu gặp break tại đâu, thì nó sẽ thoát câu lệnh switch tại đó không truy vấn phía sau nữa.
+ Trường hợp có break và có case !## data (case khác data), thì nó bỏ qua case khác đó, để vẫn truy vấn tiếp case nhánh phía sau.
+ Trường hợp có break và có case === data, thì nó chỉ thực thi mã code trong case đó, và bỏ qua tất cả các case phía sau break và default.
Khi nào thì sử dụng câu lệnh else if, khi nào thì dùng switch
Dùng câu lệnh else if khi:
- Cần so sánh tính đúng hay sai (>, <, !==,..).
- Số lượng case ít, nhỏ hơn 3 case so sánh.
Dùng câu lệnh switch case khi:
- Biết trước giá trị case và số lượng case nhiều, từ 3 case trở lên.
Toán tử 3 ngôi Ternary operator
Toán tử 3 ngôi tức là có 3 vế, dùng trong trường hợp điều kiện đơn giản: nếu thỏa mãn điều kiện này thì trả về kết quả này, không thỏa mãn thì trả về kết quả kia.
Thường sử dụng cho 1 biến đơn giản, hoặc in ra dòng chữ đơn giản. Nếu nhiều điệu kiện so sánh phức tạp thì không sử dụng vì viết code sẽ rối phức tạp hơn so với câu lệnh else if, switch.
Ví dụ:
Một khóa học đăng bán giá 500.000 VNĐ, thì sẽ hiển thị giá mua ra, nếu tặng (bán 0đ) thì hiển thị là Miễn Phí.
var course = {name: ‘JS’,coin: 0}var result = course.coin > 0 ? `${course.coin} Coin` : ‘Miễn phí’console.log(result) // Miễn phí
hoặc
var course = {name: ‘JS’,price: 500000}var result = course.price > 0 ? `${course.price} VNĐ` : ‘Miễn phí’console.log(result) // 500000 VNĐ
Khái quát toán tử 3 ngôi: Vế thứ nhất ? vế thứ hai : vế thứ ba
Vế thứ nhất: là điều kiện, nếu course.price > 0
thì thực thi vế thứ hai: `${course.price} VNĐ`
không thỏa mãn điều kiện trong vế thứ nhất, thì thực thi vế thứ ba: ‘Miễn phí’
Leave A Comment
You must be logged in to post a comment.