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", а затем отобразит "Нет купона". Он делает это для каждого заявления if, кроме последнего, в возрасте 50 лет. Если я вхожу в возраст 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. Вы можете переписать свой код с помощью такого переключателя:
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;
}
default
не требует break
только последние утверждения 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 здесь
else if
после первого,if