以下函数定义有什么区别?
1:
$(function () {
//stuff here
});
Run Code Online (Sandbox Code Playgroud)
2:
function($){
//stuff here
}
Run Code Online (Sandbox Code Playgroud)
在#1中,当DOM准备就绪时,jQuery将调用你的函数; 传递函数$()是一个快捷方式$(document).ready(function() { ... });(详情请参见此处).
在#2中,您正在定义一个函数,但既不调用它也不要求jQuery调用它.(事实上,如图所示,这是一个语法错误 - 您需要将其分配给某个东西或调用它以使其在没有名称的情况下有效.)您没有引用任何内容将执行该函数,您将拥有自己打电话.
在#2上,你可能看到的成语是:
(function($) {
// ...code using `$` for jQuery here...
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
当您希望代码立即运行(不等待DOM准备好)时,这是相当标准的事情,并且您希望$在函数内使用来引用jQuery,但您希望与noConflict模式兼容.你在插件中看到了很多.它定义了一个接受$参数的函数,该函数隐藏任何已$定义的全局参数,然后立即调用jQuery作为参数传入的函数.因此即使$不映射到jQuery全局,它也在该函数内.你可以这样做:
(function() {
var $ = jQuery;
// ...code using `$` for jQuery here...
})();
Run Code Online (Sandbox Code Playgroud)
...但由于某种原因,早期的例子更为常见,即使有点不太清楚.(我想,这是一些较短的字符.)