jquery - "!function($){}(window.jQuery)"是什么意思?

标签 jquery twitter-bootstrap

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/

相关文章:

javascript - 如何在使用 Jquery 脚本时从 url 获取值?

javascript - Jquery UI 选项卡和 jcarousel lite pluings 在 Internet Explorer (IE) 中似乎不起作用(冲突)

html - 使 Bootstrap 列流畅,(自动可调)现在它们堆叠在小屏幕上

html - 如何根据包含的div的大小设置背景图片的大小?

twitter-bootstrap - Bootstrap 3,Windows Phone Internet Explorer 设备宽度

javascript - 如何获取json格式的KendoGrid显示数据?

php - 让 Ajax 提交表单数据,但不会为文本区域执行此操作

jquery - Angular 将页面转换为可下载或通过电子邮件发送的 html

javascript - 不符合预期的 Bootstrap 表

css - 如何将静态和流体布局与 Twitter Bootstrap 相结合?