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

anonymous javascript function call !function vs function

本问题已经有最佳答案,请猛点这里访问。

怎么会

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

产生SyntaxError: Unexpected token (

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

提醒"test123"


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

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

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

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

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