!function($){}(window.jQuery)

function(){}();
(function(){})();
这两个是自调用的匿名函数,也称为立即调用的函数表达式(IIFEs)。它立即内联执行匿名函数。

()是对函数赋值,所以function( $ ){}(window.jQuery) 就是指把window.jQuery 作为参数传给前面的匿名函数,也就是$.

这样做的好处是,在这个匿名函数代码块里保证了$ 与 window.jQuery 是相等的,并且不影响外部其他程序对 $ 的改变。因此,在闭包中使用 $ 编写的代码将始终有效。另一个好处是,$ 在匿名函数中作为参数出现,这使它在作用域链中更为接近,因此JS解释器在闭包中查找$ 对象所需的时间比使用global$时要少。

$(function(){  

})

正如您可能已经知道的,这是jQuery的document ready块,它确保当dom准备好时,此函数中的代码将运行,因此所有事件绑定都将正常工作。

!的作用:

(function() {
    alert('first');
}())

上述代码执行时会alert first。让我们模拟一下JS引擎如何执行上面的代码块。它执行这个匿名函数 funtion(){alert(‘first’);}(),显示警报,同时没有任何返回值。(undefined)又被执行,所以console会报错:undefined is not a function.

!可以解决上述错误:

!(function() {
    alert('first');
}())

当你使用的时候!,函数将成为一元(逻辑)NOT运算符的单个操作数。
这将强制将函数作为表达式计算,从而允许立即内联调用它。

参考:
https://stackoverflow.com/questions/10896749/what-does-function-function-window-jquery-do

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值