这两者之间有什么区别:
$(function () {
// do stuff
});
和
(function () {
// do stuff
})();
答案 0 :(得分:46)
第一个使用jQuery将函数绑定到document.ready
事件。第二个声明并立即执行一个函数。
答案 1 :(得分:22)
$(function() {});
是
$(document).ready(function() {
/* Handler for .ready() called. */
});
虽然(function() {})();
是一个即时调用的函数表达式,或IIFE。这意味着它是一个表达式(不是语句),它在创建后立即被调用。
答案 2 :(得分:4)
一个是jquery $(document).ready
函数,另一个是调用自身的匿名函数。
答案 3 :(得分:3)
它们都是匿名函数,但会立即调用(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();
唯一的区别是您没有污染全局命名空间。
答案 4 :(得分:1)
$(function () {
// It will invoked after document is ready
});
这个函数执行一旦文件准备就绪,整个HTML应该在执行之前加载,但在第二种情况下,函数在创建后立即调用。
(function () {
// It will invoked instantly after it is created
})();