var question=prompt("What is your age?");

if (question == 14) {
    alert("Coupon 1")
}
if (question == 21) {
    alert("Coupon 2")
}
if (question == 30) {
    alert("Coupon 3")
}
if (question == 50){
    alert ("Coupon 4")
}
else {
    alert("No Coupon")
}


如果输入年龄14,它将显示“ Coupon 1”,然后显示“ No Coupon”。它为除最后一个年龄50岁以外的所有if语句执行此操作。如果输入年龄50岁,则仅获得优惠券4,而没有“无优惠券”。
我不明白为什么要这么做。

最佳答案

您的if语句没有连接,每个语句都独立于其他语句而发生,这意味着所有情况都将被检查,即使较早的一个语句返回true。您的代码更像这样:

var question = prompt("What is your age?");
    //check if 14
    if (question == 14) {
        alert("Coupon 1")
    }
    //check if 21
    if (question == 21) {
        alert("Coupon 2")
    }
    //check if 30
    if (question == 30) {
        alert("Coupon 3")
    }
    //check if 50, else no coupon
    if (question == 50){
        alert ("Coupon 4")
    }
    else {
        alert("No Coupon")
    }


尝试将其更改为使用一串if elseif语句,这意味着逻辑是一个连续的流程:

var question = prompt("What is your age?");
        //check if 14
        if (question == 14) {
            alert("Coupon 1")
        }
        //check if 21
        else if (question == 21) {
            alert("Coupon 2")
        }
        //check if 30
        else if (question == 30) {
            alert("Coupon 3")
        }
        //check if 50
        else if (question == 50){
            alert ("Coupon 4")
        }
        //if none of the above, no coupon
        else {
            alert("No Coupon");
        }


Javascript和其他许多语言都有内置的语法,专门用于处理这种if-elseif-else链,称为Switch Statement。您可以使用如下开关来重写代码:

switch (prompt("What is your age?")) {
    case 14:
        alert("Coupon 1");
        break;
    case 21:
        alert("Coupon 2");
        break;
    case 30:
        alert("Coupon 3");
        break;
    case 50:
        alert("Coupon 4");
        break;
    default:
        alert("No Coupon");
        break;
}

09-10 13:36
查看更多