2013-12-18 85 views
-1

您好我有這樣的代碼,現在語法錯誤,非法return語句

var compare = function (choice1, choice2) 
{ 
    if (choice1 === choice2) 
    { 
     return "The result is a tie!"; 
    } 
}; 

if (choice1 === "Rock") 
{ 
    if (choice2 === "Scissors") 
    { 
     return "Rock wins!"; 
    } 
    else (choice2 = "Paper") 
    { 
     return "Paper wins!"; 
    } 
} 

,但我不斷收到一個錯誤Synatax,非法return語句。

我不明白爲什麼我得到這個錯誤,我做錯了什麼?我相信語法是完全正確的。

我正在使用在線編輯器,而不是實際的IDE。

+1

'選擇2 = 「紙」'看起來像一個錯字 – Bathsheba

+2

也許你想要的'else if(choice2 ==「Paper」)'? - 並將if包含在'compare'函數中:) –

+0

對你的同學作弊:http://stackoverflow.com/q/20622970/1636522:D – leaf

回答

2

我想你想寫以下

var compare = function (choice1, choice2) 
{ 
    if (choice1 === choice2) 
    { 
     return "The result is a tie!"; 
    } 

    if (choice1 === "Rock") 
    { 
     if (choice2 === "Scissors") 
     { 
      return "Rock wins!"; 
     } 
     else if (choice2 === "Paper") 
     { 
      return "Paper wins!"; 
     } 
    } 
}; 
+1

用這種方式寫的else語句是沒有意義的。 –

0

return語句只在函數內部有效的。

看代碼

var compare = function (choice1, choice2) 
{ 
    if (choice1 === choice2) 
    { 
     return "The result is a tie!"; 
    } 
}; 

的這部分代碼將正常工作。但是在分號(;)之後,會啓動一個單獨的代碼部分,最終不是函數的一部分,因爲您的函數以分號結尾,這就是代碼的下半部分發出此錯誤的原因。

第二件事,你的其他陳述是沒有意義的。你的代碼應該是這樣的

var compare = function (choice1, choice2) { 
    if (choice1 === choice2) { 
     return "The result is a tie!"; 
    } 
    if (choice1 === "Rock") { 
     if (choice2 === "Scissors") { 
      return "Rock wins!"; 
     } else if (choice2 === "Paper") { 
      return "Paper wins!"; 
     } 
    } 
}; 
0

而且,我犯了這個錯誤,使用debugger;或換行的地方的時候,請不要在你的瀏覽器的控制檯返回。這將返回相同的語法錯誤,因爲您的返回未包含在函數中。

在控制檯別:
return choice1 === choice2 //錯誤

,而不是僅僅做:
choice1 === choice2 // true或false