猿问

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

今天在做编程练习的时候发现了两个问题

(function($){})(jQuery)和$(function(){})的不同就是在于一个是预先定义好的一个是在DOM加载后执行预先定义好的函数,不知道这样理解对不对?

比较迷惑的是另一个,有的帖子说(function($){...})(jQuery) 是等于(function(arg){...})(param)相当于定义了一个参数为arg的匿名函数,并且将param作为参数来调用这个匿名函数。这个地方怎么理解?求指教

Raynau
浏览 1926回答 3
3回答

hussion

首先:(function($){})(jQuery)和$(function(){})是没有任何关系的,前者只是一个IIFE,后者只是一个普通的高阶函数jQuery function,然后传入一个参数function。其次:(function($){...})(jQuery) 是等于(function(arg){...})(param)这都是一个IIFE。最后: IIFE --> 快速执行表达式,同时也是一个闭包。

东吴老大

(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元素而引发错误的情况两者并没有太多联系。

Raynau

谢谢两位的解答,基本上已经懂了,我尝试用一下。
随时随地看视频慕课网APP

相关分类

JQuery
我要回答