2015-12-14 23 views

回答

0

解析器将前者解释为function declaration,后者解释为function expression

为什么?要理解我们需要查看ECMA-262第3版的第11.1.6和12.4节。第12.4节指出“ExpressionStatement不能以function关键字开头,因为这可能会使FunctionDeclaration模糊不清。”这告诉我们function f(){}()必须是函数声明,并且()是无效的语法。这个陈述是一个表达式的原因是因为第11.1.6节中的分组操作符(又名括号)强制该函数被视为表达式。

相关问题