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岁,它将显示"优惠券1"之后它还会显示" No Coupon"。它为每个if语句执行此操作,除了最后一个,50岁。如果我进入50岁,我只能获得优惠券4而且没有#34;没有优惠券"。 我不明白为什么会这样做。
答案 0 :(得分:1)
您的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;
}
答案 1 :(得分:0)
只连接了最后一个if和else语句,前三个是三个独立的if语句,所以前三个案例的每一个都是真的,其中一个条件也是真的。
var question=prompt("What is your age?");
if (question == 14) {
alert("Coupon 1")
}
else if (question == 21) {
alert("Coupon 2")
}
else if (question == 30) {
alert("Coupon 3")
}
else if (question == 50){
alert ("Coupon 4")
}
else {
alert("No Coupon")
}
阅读if-else if-else语句here