为了账号安全,请及时绑定邮箱和手机立即绑定

关于(function($){})(jQuery)的一点问题

关于(function($){})(jQuery)的一点问题

Raynau 2014-11-25 17:35:36
今天在做编程练习的时候发现了两个问题(function($){})(jQuery)和$(function(){})的不同就是在于一个是预先定义好的一个是在DOM加载后执行预先定义好的函数,不知道这样理解对不对?比较迷惑的是另一个,有的帖子说(function($){...})(jQuery) 是等于(function(arg){...})(param)相当于定义了一个参数为arg的匿名函数,并且将param作为参数来调用这个匿名函数。这个地方怎么理解?求指教
查看完整描述

3 回答

已采纳
?
hussion

TA贡献5条经验 获得超7个赞

首先:(function($){})(jQuery)和$(function(){})是没有任何关系的,前者只是一个IIFE,后者只是一个普通的高阶函数jQuery function,然后传入一个参数function。

其次:(function($){...})(jQuery) 是等于(function(arg){...})(param)这都是一个IIFE。


最后: IIFE --> 快速执行表达式,同时也是一个闭包。

查看完整回答
2 反对 回复 2014-11-26
?
东吴老大

TA贡献2条经验 获得超2个赞

(function($){})(jQuery)可以分作两部来解读:

    1,定义函数function fun(param){}

    2,立即调用fun(jQuery),传入的参数是jQuery对象

    *注:只是定义的并非名为fun的函数,而是匿名函数

         改写法多用于无论$是否已被其他库占用,匿名函数内都可用$来引用jQuery对象


$(function(){})表示传入jQuery构造函数的是一个function

当构造函数为function时jQuery对象会将该函数绑定到DOMContentLoaded(不存在则绑定到window.onload)事件句柄上

表示文档或整个window内容资源加载完毕再执行传入的function

这种写法是为了防止在DOM元素还未加载之前js代码就过早操作该DOM元素而引发错误的情况


两者并没有太多联系。


查看完整回答
2 反对 回复 2014-11-26
  • Raynau
    Raynau
    你的解答很好很详细,可能因为我提问没问清楚,我看了你们的回答再百度了一下IIFE就大致明白了,但是只能采纳一个答案,还是很感谢你的详细解答。
?
Raynau

TA贡献2条经验 获得超0个赞

谢谢两位的解答,基本上已经懂了,我尝试用一下。

查看完整回答
反对 回复 2014-11-27
  • 3 回答
  • 1 关注
  • 1861 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信