JavaScript立即函数调用 - 为什么函数周围需要括号?

con*_*att 0 javascript

为什么需要将函数声明包装在括号中以立即调用?我很好奇解释器在括在括号中时如何读取立即调用的函数.

我为什么要这样做......

(function() { 
   // Logic 
 })();
Run Code Online (Sandbox Code Playgroud)

而不是这个......

function() { 
   // Logic 
 }();
Run Code Online (Sandbox Code Playgroud)

0x4*_*2D2 6

当函数包含在括号中时,它被解析为表达式 - 函数表达式.否则没有它们会被解析为函数声明.函数声明需要一个它看到你没有给出的名称,这反过来会导致语法错误.此外,您不能将()内联应用于函数声明以便调用它.空括号是语法错误,但非空括号是将与函数分开计算的表达式.

  • `function foo(){}(bar);`虽然有效,但它没有按照你想要的那样做. (2认同)