“!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(){}()
之间存在细微差别:而括号只是以函数表达式的形式将函数计算为函数对象,即一元!
将做同样的事情并翻转函数表达式的返回值。 由于您不会将此值分配给任何内容,因此只会被丢弃。
它是一个字节的加载时间与一个!
在执行时间进行操作。 这两者不应该超过几毫微秒/微秒。 这主要是编码风格偏好的问题。
上一篇: what is the meaning of "!function($){}(window.jQuery)"?