5

怎么来的

function(){ alert("test123");}()

生产SyntaxError: Unexpected token (

尽管

!function(){ alert("test123");}()

警报“test123”

?

4

1 回答 1

3

这是因为通过添加!符号,您将声明转换为表达式并立即调用它。通过将您的函数括在括号中,您将使第一个示例正常工作:

(function(){ alert("test123");})()

为了更清楚,您可以将第一个表达式视为:

if (false || !function(){ return false; }())


正如@zerkms 注意到的那样,有一个关于立即调用函数的完整解释。

于 2013-08-27T08:15:21.040 回答