以下函数定义有什么区别?
1:
1:
$(function () {
//stuff here
});
2:
function($){
//stuff here
}
$()
是$(document).ready(function() { ... });
的快捷方式(详细信息)。(function($) {
// ...code using `$` for jQuery here...
})(jQuery);
当您希望代码立即运行(而不是等待DOM准备就绪),并且要在函数内使用$
来引用jQuery,但又希望兼容noConflict
模式时,通常会执行此操作。您在插件中经常看到这种情况。它定义了一个接受$
参数的函数,该参数覆盖全局定义的任何$
,然后立即调用该函数,并将jQuery
作为参数传递进去。因此,即使全局上没有将$
映射到jQuery
,在该函数内部也是如此。您可以通过以下方式执行相同的操作:
(function() {
var $ = jQuery;
// ...code using `$` for jQuery here...
})();
...但由于某种原因,前面的例子更常见,即使有点不太清晰。(我想可能是它少了几个字符。)
这段代码使用匿名函数作为第一个参数来调用函数$。通常在页面加载完成(或者更好地说是DOM准备就绪)时使用它来执行某些操作。它会在事件被触发时执行一些操作。
这段代码只是声明了一个带有一个参数$的匿名函数。您可以经常在jQuery插件的代码中找到此类函数。这种技术对于局部拥有$变量非常有用。这将稍微提高性能并帮助不污染全局作用域。
因此,第一个片段将执行某些操作,而第二个片段将没有任何有用的操作。
$(document).ready(handler)
而不是$(document.body).ready(handler)
。) - T.J. Crowder$(handler)
或$(document).ready(handler)
。文档中没有关于$(document.body).ready(handler)
的说明,所以我不会使用它。 - T.J. Crowder