2016-09-17 60 views
-2

我通過代碼學院學習JavaScript,目前正在創建一個簡單的搖滾,紙,剪刀遊戲。然而,我被一個小小的錯誤消息難倒,說有一個意想不到的關鍵字:else。我已經梳理了這個小塊代碼幾十次,但似乎無法找到錯誤,所以我想或許一雙新眼睛能夠找到我做錯了什麼。JavaScript初學者陷入了意想不到的錯誤

var compare = function(choice1, choice2) { 
    if(choice1 === choice2) { 
     return "The result is a tie!"; 
    } 
     else if (choice1 === "rock"){ 
      if (choice2 === "scissors"){ 
       return "rock wins"; 
      } 
      else { 
       return "paper wins"; 
      } 
    } 
     else if (choice1 === "paper"); 
     { 
      if (choice2 === "rock"){ 
       return "paper wins"; 
      } 
      else { 
       return "scissors wins"; 
      } 
    } 
     else if (choice1 === "scissors"); 
     { 
      if (choice2 === "rock"){ 
       return "rock wins"; 
      } 
      else { 
       return "scissors wins": 
      } 
    } 


}; 
+0

順便說一句,在'返回「剪刀勝利」:「應該以';'結尾,而不是:'。它可能實際上也會導致你的問題或另一個解決了你的問題。 – rbaleksandar

回答

-1

另外,在最終返回語句中將完整冒號更改爲分號。

+0

謝謝你,克里斯 –

3

末有刪除分號:

else if (choice1 === "scissors"); 

並請正常縮進代碼。

1

不要把分號如果表達式後:

if (choice1 === "paper"); 

分號表示語句的結束。

此外,一個更好的方式來編碼,這將是使用開關

switch (choice1) { 
    case choice2: 
     return "tie"; 
    case "rock": 
     return choice2 === "scissors" ? "rock wins" : "paper wins"; 
    case "paper": 
     return choice2 === "rock" ? "paper wins" : "scissors wins"; 
    case "scissors": 
     return choice2 === "rock" ? "rock wins" : "scissors wins"; 
} 

開關語句是一個很好的方式來編寫代碼時,你需要一個變量對幾個不同的值進行比較。

return choice2 ===「rock」? 「搖滾勝利」:「剪刀勝利」;三元語句評估選擇2 ===「石頭」,如果它是真實的,它會返回「石勝」,否則,它將返回「剪刀贏」

+0

謝謝!我不再難倒了。 –