【发布时间】:2012-12-07 14:11:28
【问题描述】:
所以我回过头来查看我自己的一些代码以及其他一些 javascript 代码,我意识到不久前当我开始编写 javascript 库时,我使用的闭包看起来像这样:
(function( window, document, undefined ) {
// code
})( window, document );
但后来我看到了一些引导代码,我改成了这样的语法:
! function (window, document, undefined) {
// code
}(window, document);
现在,如果我没记错(如果我错了,请纠正我),放置“!”在我的匿名函数前面只是导致它被视为'()'然后返回(到无处?)函数返回的值是否不是未定义、null或空的布尔值。
我想知道的是,使用 '!()' 语法而不是 '()()' 之间真的有区别吗?是否有某些浏览器会抱怨?
感谢您的任何想法,谢谢!呵呵
【问题讨论】:
-
见stackoverflow.com/questions/3755606/…。这样做的目的是在每个函数的代码大小中节省一个额外的字节。
-
太棒了,所以它实际上只是节省了一个字节来提高效率,然后根据我使用的闭包数量等放大。
-
与缩小和 gzip 压缩等相比,节省的字节数显着
-
另外,有点迂腐,这些实际上并不是闭包——它们只是匿名函数。闭包是将函数与存储在变量中的一些数据联系在一起,当您调用函数时,这些数据可能不再在范围内。 tinyhippos.com/2010/07/05/closure-in-javascript-with-examples
标签: javascript scope closures anonymous-function