传递$作为函数参数(jQuery)

时间:2016-10-04 11:39:31

标签: jquery

我遇到了这样的代码:

function doSomething($, $variable){
  ...
}



(function ($){

  $(function () {
   doSomething ($, $('.div'));
  });

}(jQuery));

是否与在jQuery中定义doSomething()并删除$

相同

由于

2 个答案:

答案 0 :(得分:2)

  

是否与在doSomething()内定义jQuery并删除$

相同

如果你的意思是,它是否与:

相同
(function ($){

  $(function () {
    function doSomething($, $variable){
    }
    doSomething($('.div'));
  });

}(jQuery));

...然后没有,因为在您的问题的版本中,doSomething显然是全局的,而如果您在另一个函数中定义它,则不是。

问题末尾的结构旨在通过创建函数并调用它来传递{{1,以防止noConflict $不等于jQuery的{​​{1}}模式并将其作为名为jQuery的参数接受。可能是作者没有意识到jQuery将对自身的引用传递给ready回调的事实,因此代码可以更简单地为:

$

答案 1 :(得分:1)

第一个函数是关闭$的IIFE,并将值设置为jQuery。它通常用于避免$被其他地方的其他代码覆盖。

在IIFE内部,$始终为jQuery,但在IIFE之外,可能不是。{/ p>

内部函数$(function () {..只是一个DOM就绪处理程序,它等待文档在其中执行代码之前加载。

doSomething函数在IIFE之外定义,并且无法访问IIFE中的参数,因此$可能是未定义的,或者在该范围内不是jQuery,因此作者决定将$作为参数传递给doSomething($, $variable),这有点难以阅读,因为传递的值和参数都具有相同的名称。