2017-09-12 137 views
1
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”,然后它还显示“无优惠券”后。除了最后一个50岁以外,每个if语句都会这样做。如果我输入年龄50,我只会获得优惠券4,并且不会显示“没有优惠券”。 我不明白它为什么这样做。else语句无法正常工作

+0

使用'其他if'第一'if' – C2486

+0

大的第一个问题后!做得好 – Evert

回答

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

'default'case不需要'bre​​ak' – Phil

+0

不会伤害任何东西并且有一些优点,请查看这里的讨论:https://softwareengineering.stackexchange.com/questions/201777/break-on -default情况入位开关 – Bricky

1

只有最后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