声明如下函数的目的是什么:
!function(){ code }();
为什么!
?
答案 0 :(得分:4)
它告诉解释器函数关键字follow是函数表达式的一部分而不是声明。这允许函数立即执行,创建一个命名空间的封装模块。
更常见的方法是将函数关键字和正文包装在parens中。这有时被称为“IIFE”或模块模式。
答案 1 :(得分:2)
在JavaScript中,您可以一次性声明并执行一个函数,但是这样做:
function() { /* ... */ }();
是语法错误。
您可以通过强制解析器将函数声明识别为表达式的一部分而不是语句 来使其工作:< / p>
(function() { /* ... */ }());
通过使用!
运算符,您所看到的是另一种方法。它会否定函数的结果,但是,这里的结果(如果有的话)会被忽略。
!function() { /* ... */ }();
换句话说,它有点像黑客。
进一步阅读: