这两者之间有什么区别:
$(function () {
// do stuff
});
与
(function () {
// do stuff
})();
这两者之间有什么区别:
$(function () {
// do stuff
});
与
(function () {
// do stuff
})();
第一种方法使用jQuery将一个函数绑定到document.ready
事件。第二种方法声明并立即执行一个函数。
$(function() {});
$(document).ready(function() {
/* Handler for .ready() called. */
});
(function() {})();
是即时调用函数表达式(Immediately Invoked Function Expression,IIFE)。“即时调用”表示它是一个表达式(而不是语句),并且在创建之后立即被调用。
(function () { arguments.callee() })()
将被称为“自执行/自调用的匿名函数”,而 (function(){})()
只是一个立即调用的匿名函数。详情请见:http://benalman.com/news/2010/11/immediately-invoked-function-expression/#iife - nwellcome它们都是匿名函数,但 (function(){})()
会立即执行,而 $(function(){})
只有在文档准备好后才会被调用。
jQuery 的工作原理类似于这样。
window.jQuery = window.$ = function(arg) {
if (typeof arg == 'function') {
// call arg() when document is ready
} else {
// do other magics
}
}
所以你只需要调用jQuery函数并传入一个函数,在文档准备好时会调用它。
“自执行匿名函数”与此相同。
function a(){
// do stuff
}
a();
其中一个是jquery的$(document).ready
函数,另一个是调用自身的匿名函数。
$(function () {
// It will invoked after document is ready
});
这个函数在文档准备就绪后执行,也就是说,在执行它之前整个HTML都应该被加载完毕,但在第二种情况下,函数在创建后立即被调用。
(function () {
// It will invoked instantly after it is created
})();