匿名javascript函数调用!函数与函数

Alo*_*lon 5 javascript

怎么会

function(){ alert("test123");}()
Run Code Online (Sandbox Code Playgroud)

产生 SyntaxError: Unexpected token (

!function(){ alert("test123");}()
Run Code Online (Sandbox Code Playgroud)

提醒"test123"

Ana*_*uza 3

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

(function(){ alert("test123");})()
Run Code Online (Sandbox Code Playgroud)

为了更清楚地说明,您可以将第一个表达式想象为:

if (false || !function(){ return false; }())
Run Code Online (Sandbox Code Playgroud)


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