2017-09-12 133 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