2017-04-01 95 views
-2
if(choice1 === choice2) { 
return"The result is a tie!"; 

}的Javascript返回非法聲明

否則,如果(選擇1 === 「石頭」){

if (choice2 === "scissors") { 
    return "rock wins"; 

} 
else { 
    return "paper wins"; 
} 

}

請幫助MEE

+0

問題是:非法返回聲明 –

+2

應該在函數內使用'return' – topheman

+0

你想返回什麼?您只能返回到一個功能 –

回答

1

一個回報語句將控制權返回給調用上下文。在全局代碼的情況下,沒有調用上下文返回,所以它們在那裏是非法的。它們是FunctionDeclaration的生產的一部分,因此您只能在函數內部使用它們。

要到ECMA-262的相關部分,先從§14.1 Function Definitions,其中之一是FunctionDeclaration其中包括,除其他事項外,一個FunctionBody,它是由一個FunctionStatementList,其中包含了StatementList的。現在(奇怪地)構成了零個或多個StatementListItems,它們是Statements,並且一種類型的語句是ReturnStatement,它是described in §13.10

所以返回語句只能出現在函數體中,而函數體只能出現在FunctionDeclaration,FunctionExpressionArrowFunction的代碼中。所以從這裏可以更一般地說,返回語句只能出現在函數內部。