2011-09-29 50 views

回答

2

这取决于其中你写这个。 function(){}()本身会产生语法错误,因为它被评估为函数声明和那些需要名称。

通过使用括号或非运算符,可以强制将其解释为函数表达式,它们不需要名称。

在无论如何将其视为表达式的情况下,您可以省略括号或运算符。

2

我猜你会问,为什么使用:

var fn = (function(){}()); 

与:

var fn = function(){}(); 

对我来说,答案很简单,往往在RHS功能是漫长的,它不是,直到我去底部,并看到关闭(),我意识到我一直在阅读一个函数表达式而不是函数分配。

完整的解释在Peter Michaux的An Important Pair of Parens

2

RobG的答案略有差异。

许多脚本在一个函数中包含整个程序,以确保适当的范围。然后该函数立即使用最后的双括号运行。但是,这与定义可在页面中使用但最初不能运行的功能的程序略有不同。

这两种情况之间的唯一区别是最后两个字符(添加了双括号)。由于这些可能是非常长的程序,因此最初的括号表示“将立即运行”。

该程序是否需要运行?不。对于查看代码并试图理解它的人有用吗?是。

相关问题