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;
}