xil*_*il3 36 javascript jquery anonymous-function iife
这两者有什么区别:
$(function () {
// do stuff
});
Run Code Online (Sandbox Code Playgroud)
和
(function () {
// do stuff
})();
Run Code Online (Sandbox Code Playgroud)
g.d*_*d.c 48
第一个使用jQuery将函数绑定到document.ready事件.第二个声明并立即执行一个函数.
voi*_*tan 24
$(function() {}); 是一个jQuery快捷方式
$(document).ready(function() {
/* Handler for .ready() called. */
});
Run Code Online (Sandbox Code Playgroud)
虽然(function() {})();是一个即时调用的函数表达式,或IIFE.这意味着它是一个表达式(不是语句),它在创建后立即被调用.
它们都是匿名函数,但(function(){})()会立即调用,并$(function(){})在文档准备好时调用。
jQuery 的工作方式是这样的。
window.jQuery = window.$ = function(arg) {
if (typeof arg == 'function') {
// call arg() when document is ready
} else {
// do other magics
}
}
Run Code Online (Sandbox Code Playgroud)
因此,您只需调用 jQuery 函数并传入一个函数,该函数将在文档就绪时调用。
“自执行匿名函数”与执行此操作相同。
function a(){
// do stuff
}
a();
Run Code Online (Sandbox Code Playgroud)
唯一的区别是您没有污染全局命名空间。