将$作为函数参数传递(jQuery)
我遇到了这样的代码:将$作为函数参数传递(jQuery),jquery,Jquery,我遇到了这样的代码: function doSomething($, $variable){ ... } (function ($){ $(function () { doSomething ($, $('.div')); }); }(jQuery)); 这与在jQuery内部定义doSomething()并删除$相同吗 谢谢 它是否与在jQuery中定义doSomething()并删除$相同 如果你的意思是,它与: (function ($){ $(func
function doSomething($, $variable){
...
}
(function ($){
$(function () {
doSomething ($, $('.div'));
});
}(jQuery));
这与在jQuery内部定义doSomething()
并删除$
相同吗
谢谢
它是否与在jQuery
中定义doSomething()
并删除$
相同
如果你的意思是,它与:
(function ($){
$(function () {
function doSomething($, $variable){
}
doSomething($('.div'));
});
}(jQuery));
…那么不是,因为在您问题的版本中,doSomething
显然是全局的,而如果您在另一个函数中定义它,则不是
问题末尾的结构旨在通过创建函数并调用它,传入jQuery
并将其作为名为$
的参数接受,以防止$
的
模式下的$
冲突。可能是作者没有意识到jQuery将对自身的引用传递到ready回调中,因此代码可以更简单:
function doSomething($, $variable){
...
}
jQuery(function($) {
doSomething ($, $('.div'));
});
它是否与在jQuery
中定义doSomething()
并删除$
相同
如果你的意思是,它与:
(function ($){
$(function () {
function doSomething($, $variable){
}
doSomething($('.div'));
});
}(jQuery));
…那么不是,因为在您问题的版本中,doSomething
显然是全局的,而如果您在另一个函数中定义它,则不是
问题末尾的结构旨在通过创建函数并调用它,传入jQuery
并将其作为名为$
的参数接受,以防止$
的
模式下的$
冲突。可能是作者没有意识到jQuery将对自身的引用传递到ready回调中,因此代码可以更简单:
function doSomething($, $variable){
...
}
jQuery(function($) {
doSomething ($, $('.div'));
});
第一个函数是一个IIFE,它关闭
$
,并将值设置为jQuery
。它通常用于避免$
被其他代码覆盖
在该IIFE中,$
将始终是jQuery
,但在IIFE之外,它可能不是
内部函数$(函数(){..
只是一个DOM就绪处理程序,它在执行文档内部的代码之前等待文档加载
doSomething
函数是在IIFE之外定义的,并且不能访问IIFE中的参数,因此$
可能是未定义的,或者是该范围内的jQuery以外的内容,因此作者决定将$
作为参数传递给doSomething($,$variable)
,这有点难读,因为传递的值和参数都有相同的名称。第一个函数是一个IIFE,它关闭$
,并将值设置为jQuery
。它通常用于避免$
被其他代码覆盖
在该IIFE中,$
将始终是jQuery
,但在IIFE之外,它可能不是
内部函数$(函数(){..
只是一个DOM就绪处理程序,它在执行文档内部的代码之前等待文档加载
doSomething
函数是在IIFE之外定义的,并且不能访问IIFE中的参数,因此$
可能是未定义的,或者是该范围内的jQuery以外的内容,因此作者决定将$
作为参数传递给doSomething($,$variable)
,这有点难读,因为传递的值和参数都有相同的名称。是的,看起来有些人过度封装了东西。$就像任何其他变量一样:你可以将其作为函数参数传递,也可以将其作为外部作用域中的全局变量。你可以参考这篇文章以了解有关它。它很好地解释了这个主题。是的,看起来有些人过度包装了东西。$
就像任何其他变量一样:你可以将它作为函数参数传递,或者将它作为外部范围中的全局变量。你可以参考这篇文章来清楚地理解它。它对这个主题的解释很好。