2017-04-01 53 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的代码中。所以从这里可以更一般地说,返回语句只能出现在函数内部。