Possible Duplicate:
What does the exclamation mark do before the function?
What does !function ($) { $(function(){ }) }(window.jQuery) do?
“!function($){}(window.jQuery)”是什么意思?
<script type="text/javascript">
!function($){
//some codes here
}(window.jQuery)
</script>
该js原代码url: 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
模式下 jQuery。
在开发供第三方使用的插件时,这种方法非常常见(和 recommended )。
再解释一下:函数声明不能是表达式的一部分,因此当您将 function 关键字放在 ()
内或在其前面加上一元运算符时,它会被解释为 function expression .
¹ (function(){}())
和 !function(){}()
之间存在细微差别:而括号只是对函数求值对于函数表达式形式的函数对象,一元 !
会做同样的事情,并翻转函数表达式的返回值。由于您没有将此值分配给任何内容,因此它将被丢弃。
加载时间为 1 个字节,而 !
操作的执行时间成本为 1 个字节。这两者所花费的时间不应超过几分之一毫秒/微秒。这主要是编码风格偏好的问题。
关于jquery - "!function($){}(window.jQuery)"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14289726/