“!function($){}(window.jQuery)”的含义是什么?

可能重复:
该功能之前感叹号做了什么?
什么!功能($){$(功能(){})}(window.jQuery)做什么?

“!function($){}(window.jQuery)”的含义是什么?

<script type="text/javascript">
    !function($){
        //some codes here
    }(window.jQuery)
</script>

这js原始代码网址:http://twitter.github.com/bootstrap/assets/js/bootstrap-dropdown.js


! 在行的开始处将您的函数转换为函数表达式,它具有与更受欢迎的IIFE形式基本相同的效果¹:

(function($){}(window.jQuery));
//which in turn is the same as
(function($){})(window.jQuery);

然后通过传递window.jQuery作为$参数立即调用它。 这对于能够在函数内使用$引用jQuery是有用的, noConflict于在noConflict模式下具有jQuery的页面。

这种方法在为第三方使用开发插件时非常常见(并且推荐)。

更多的解释:函数声明不能​​是表达式的一部分,因此当你把函数关键字放在一个()或者在一个一元运算符之前时,它被解释为一个函数表达式。

¹ (function(){}())!function(){}()之间存在细微差别:而括号只是以函数表达式的形式将函数计算为函数对象,即一元! 将做同样的事情并翻转函数表达式的返回值。 由于您不会将此值分配给任何内容,因此只会被丢弃。

它是一个字节的加载时间与一个! 在执行时间进行操作。 这两者不应该超过几毫微秒/微秒。 这主要是编码风格偏好的问题。

链接地址: http://www.djcxy.com/p/17427.html

上一篇: what is the meaning of "!function($){}(window.jQuery)"?

下一篇: strange anonymous javascript function call