Javascript: Chuyển đổi giữa lệnh if else và switch

Cả hai lệnh if else và switch case đều có chung một tính chất là rẻ nhánh chương trình, vậy câu hỏi đặt ra là làm thế nào để chuyển đổi một bài toán từ lệnh if else sang switch case và ngược lại.

Bài giải

-------------------- ######## --------------------

Khi chuyển đổi giữa lệnh if else sang lệnh switch thì bạn cần phải lưu ý một điều như sau: Đối với lệnh switch nó sử dụng toán tử so sánh bằng, còn đối vớ lệnh if thì bạn có thể sử dụng các toán tử khác như toán tử so sánh lớn hơn, bé hơn, ... Vì vậy tùy vào mỗi bài toán mà bạn có thể chuyển đổi được hoặc không được.

Mình sẽ lấy ví dụ trong bài học này luôn đó là bài kiểm tra số chẵn hay lẻ, mình sẽ chuyển bài đó sang lệnh if else.

Sử dụng lệnh switch RUN
var number = parseInt(prompt("Nhập số cần kiểm tra"));

var mod = (number % 2);

switch (mod)
{
    case 0 : {
        document.write(number + " là số chẵn");
        break;
    }
    case 1: {
        document.write(number + " là số lẽ");
        break;
    }
    default : {
        document.write("Ký tự bạn nhập không phải số");
    }
}

Sử dụng lệnh if else RUN
var number = parseInt(prompt("Nhập số cần kiểm tra"));

var mod = (number % 2);

if (mod == 0){
    document.write(number + " là số chẵn");
}
else if (mod == 1){
    document.write(number + " là số lẽ");
}
else{
    document.write("Ký tự bạn nhập không phải số");
}

Một ví dụ ta không nên chuyển sang switch case.

Code
// Ứng dụng xếp hạng điểm thi
var point = parseInt(prompt('Nhập số điểm thi bạn muốn kiểm tra', '0'));
var message = '';

if (point < 5 && point >= 0){
    message = 'Bạn đã bị rớt môn';
}
else if (point >= 5 && point <= 6){
    message = "Bạn là học sinh trung bình";
}
else if (point > 6 && point < 8){
    message = "Bạn là học sinh khá";
}
else if (point >= 8 && point <= 10){
    message = "Bạn là học sinh giỏi";
}
else{
    message = "Bạn nhập điểm bị sai";
}

document.write(message);

Với bài toán này ta không thể chuyển sang lệnh switch case vì nội dung so sánh là một biểu thức, nếu bạn cố tình muốn chuyển thì cũng được nhưng code sẽ rất là dài vì bạn phải so sánh từng con số từ 0 - 10.

 

Câu hỏi và bài tập

Nguồn: freetuts.net