美元符号之前自我声明在JavaScript中的匿名函数?
这两者有什么区别:
$(function () { // do stuff });
和
(function () { // do stuff })();
第一个使用jQuery将一个函数绑定到document.ready
事件。 第二个声明并立即执行一个函数。
$(function() {});
是一个jQuery快捷方式
$(document).ready(function() { /* Handler for .ready() called. */ });
while (function() {})();
是一个即时调用的函数expression式,或IIFE。 这意味着它的一个expression式(不是一个语句),并且在创build之后立即被调用。
一个是jquery $(document).ready
函数,另一个只是一个匿名函数自己调用。
它们都是匿名函数,但(function(){})()
立即调用(function(){})()
,并在文档准备就绪时调用$(function(){})
。
jQuery的作品是这样的。
window.jQuery = window.$ = function(arg) { if (typeof arg == 'function') { // call arg() when document is ready } else { // do other magics } }
所以你只是调用jQuery函数并传入一个函数,这个函数将在文档准备就绪时调用。
“自动执行匿名function”与此相同。
function a(){ // do stuff } a();
唯一的区别是你不会污染全局命名空间。
$(function () { // It will invoked after document is ready });
这个函数执行一次文档准备就绪,整个HTML应该在执行前被加载,但在第二种情况下,创build后立即调用该函数。
(function () { // It will invoked instantly after it is created })();