我遇到了这样的代码:
function doSomething($, $variable){
...
}
(function ($){
$(function () {
doSomething ($, $('.div'));
});
}(jQuery));
是否与在jQuery中定义doSomething()
并删除$
?
由于
答案 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)
,这有点难以阅读,因为传递的值和参数都具有相同的名称。