传递$作为函数参数(jQuery的)
问题描述:
我碰到这样的代码来了?
感谢
答
是不是一样的定义
doSomething()
的jQuery
内取出$
?
如果你的意思,是一样的:
(function ($){
$(function() {
function doSomething($, $variable){
}
doSomething($('.div'));
});
}(jQuery));
...那么没有,因为在你的问题的版本,doSomething
显然是全球性的,而如果在其他函数中定义它,它不是。
你的问题的最终结构是为了防止noConflict
模式,$
不等于jQuery
,通过创建一个函数和调用它,传递jQuery
并接受它作为一个名为$
参数。这可能是因为笔者不知道的是jQuery的传递到自身的引用到准备回调的事实,因此代码可以更简单地说是:
function doSomething($, $variable){
...
}
jQuery(function($) {
doSomething ($, $('.div'));
});
答
第一个功能是关闭了$
和套IIFE值为jQuery
。它通常用于避免$
被别处的其他代码覆盖。
在IIFE内部,$
将始终为jQuery
,但在IIFE之外,它可能不是。
内部函数$(function() {..
只是一个DOM就绪处理程序,它在执行代码之前等待文档加载。
的doSomething
功能被IIFE外侧限定,并且不具有访问来自IIFE的参数,所以$
可能是未定义的或在该范围比jQuery的其它东西,因此作者决定通过$
作为参数到doSomething($, $variable)
,这有点难以阅读,因为传递的值和参数具有相同的名称。
是的,它看起来像一些人过滤东西 – smnbbrv
'$'就像任何其他变量一样:你可以将它作为函数参数传递,或者将它作为外部范围的全局变量。 –
你可以参考这篇文章清楚地了解它[链接](http://stackoverflow.com/questions/10371539/why-define-an-anonymous-function-and-pass-it-jquery-as-the-论据)。它很好地解释了这个话题。 – legend