今天在做编程练习的时候发现了两个问题(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 --> 快速执行表达式,同时也是一个闭包。
东吴老大
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元素而引发错误的情况
两者并没有太多联系。
- 3 回答
- 1 关注
- 1925 浏览
添加回答
举报
0/150
提交
取消