(function($){}(jQuery))这句话是啥意思呀啊?

(function($){}(jQuery))这句话是啥意思呀啊?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

5回答
好帮手慕星星 2019-11-17 10:04:33

同学你好,问题解答如下:

1、因为你使用的是jquery插件,所以传入的实际参数只能是jQuery,不可以是其他的。

2、传入jQuery实参是插件规定的;形参为$是大家常用的,算是形成的一种规范,也可以换成其他的。

3、不传参数直接使用匿名函数是可以的,例如:

http://img1.sycdn.imooc.com//climg/5dd0a9d70933577f08040191.jpghttp://img1.sycdn.imooc.com//climg/5dd0a9df0973141006080037.jpg

但是通常使用会传入参数,如果项目中还有引入其他插件的话,与$可能会有冲突。其实是为了保护$符号,不管外界是否引入了另外有干扰$的库,都不会干扰匿名函数中$就是jQuery的事实,因为他是作为参数被传进去的。

建议:同学不需要深究原理,插件就是为了让我们使用方便才封装的,所以我们知道怎么使用就可以,不需要深入研究这个插件是怎么封装的。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

好帮手慕码 2019-11-16 19:10:57

同学你好,1.一般来说实际开发的时候很少有人会使用$作为参数的(可以算是约定俗成)。

2.你传递其他参数也是可以的,并不限制。

如果我的回答帮到了你,欢迎采纳,祝学习愉快~

  • 提问者 lcyjerry #1
    那为什么传入的实际参数是jQuery?是为啥 为什么要这么传参呢?我直接一个自执行函数可以吗?
    2019-11-16 19:24:23
  • 提问者 lcyjerry #2
    不穿任何参数 的自执行函数不可以吗?
    2019-11-16 19:25:25
好帮手慕码 2019-11-16 10:25:41

同学你好,针对你的问题如下解答:

  1. 如果不传参数,就是一个自执行函数,无需调用,直接执行:

    http://img1.sycdn.imooc.com//climg/5dcf5d3f091f8da303770091.jpg

    效果:

    http://img1.sycdn.imooc.com//climg/5dcf5d450930be1c01170066.jpg

  2. 避免第三方破坏的意思:首先要知道,(function($){...}) (jQuery)多用于插件编写。其次,大多数开发者使用了插件之后,自己也会写插件之外的功能,为了避免传递参数的冲突,所以插件中的参数定义为$。

  3. 避免全局依赖的话,就如第二条回复中的例子:

    http://img1.sycdn.imooc.com//climg/5dcf5ded09ff4c6e03640118.jpg

    图中的arg1是局部的参数,在函数内可以使用,在函数外就无访问。

如果我的回答帮到了你,欢迎采纳,祝学习愉快~

  • 提问者 lcyjerry #1
    为了避免传递参数的冲突 为什么传的$就不会冲突呢?我传其他不行吗?那如果我其他也传$呢?
    2019-11-16 17:34:17
好帮手慕码 2019-11-15 09:51:09

同学你好,这使用$和jquery好处是:1 避免全局依赖,形成一个封闭的自执行函数;2 避免第三方破坏;3 兼容jquery操作符"$"和jquery。这总写法常用于插件的开发。如下例子:

http://img1.sycdn.imooc.com//climg/5dce047c094e559804070121.jpg

如果我的回答帮到了你,欢迎采纳,祝学习愉快~

  • 提问者 lcyjerry #1
    那如果不纯形参和实参 就单纯一个自执行函数可以吗?
    2019-11-16 01:23:06
  • 提问者 lcyjerry #2
    避免全局依赖 和 第三方破坏是啥意思 能结合例子解释下吗
    2019-11-16 01:41:03
好帮手慕码 2019-11-14 18:49:41

同学你好,这其实是一个匿名函数。例如:

(function(arg){...})(param)。

这就相当于定义了一个参数为arg的匿名函数,并且将param作为参数来调用这个匿名函数,至于用不用参数,得结合你的上下文和需求。

而(function($){...}) (jQuery)则是一样的,之所以只在形参使用$,是为了不与其他库冲突,$表示的是可以是jQuery,也可以是其他对象,这要根据上下文而定。$仅仅是一个符号,只不过被赋予特殊的含义而已。

如果我的回答帮帮到了你,欢迎采纳,祝学习愉快~

  • 提问者 lcyjerry #1
    那传入的参数好像也没有使用过啊
    2019-11-14 19:07:29
  • 好帮手慕码 回复 提问者 lcyjerry #2
    同学你好,用不用参数,得结合需求。不需要传参的话,可以不写哦~
    2019-11-14 19:29:28
  • 提问者 lcyjerry #3
    那这样传参的用处是什么呢 ?如果要使用的话该怎么用呢?
    2019-11-14 20:30:15
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师