Js立即執(zhí)行函數(shù)

js立即執(zhí)行函數(shù)可以讓你的函數(shù)在創(chuàng)建后立即執(zhí)行,js立即執(zhí)行函數(shù)模式是一種語法,可以讓你的函數(shù)在定義后立即被執(zhí)行,這種模式本質(zhì)上就是函數(shù)表達式(命名的或者匿名的),在創(chuàng)建后立即執(zhí)行。
一、JS立即執(zhí)行函數(shù)的寫法
方式1、最前最后加括號

(function(){alert(1);}()); 

方式2、function外面加括號

(function(){alert(1);})(); 

方式3、function前面加運算符,常見的是!與void

!function(){alert(1);}(); 
void function(){alert(2);}(); 

二、立即執(zhí)行函數(shù)的參數(shù)

可以給立即執(zhí)行函數(shù)傳遞參數(shù),例如
(function(who, when) {
    console.log("I met " + who + " on " + when);
} ("Joe Black", new Date()));

記住:
1、立即函數(shù)內(nèi)部是可以訪問外部變量的,所以很多情況下,我們并不需要傳參數(shù)。
如:jQuery的window實參,如果不傳入。內(nèi)部也是可以直接使用的。
2、通常你不應該給立即執(zhí)行函數(shù)傳遞太多的函數(shù),因為它很快會成為一個負擔——為了理解代碼是如何工作的,你不得不經(jīng)常上下滾動源代碼。

三、立即執(zhí)行函數(shù)的返回值

像其它任何函數(shù)一樣,一個立即執(zhí)行函數(shù)也能返回值并且可以復制給其它變量,例如
var result = (function () {
    return 2 + 2;
}());
var result = (function () {
    return 2 + 2;
})();

四、立即執(zhí)行函數(shù)的好處

1、立即執(zhí)行函數(shù)模式被廣泛使用,它可以幫你封裝大量的工作而不會在背后遺留任何全局變量。
2、定義的所有變量都會成為立即執(zhí)行函數(shù)的局部變量,所以你不用擔心這些臨時變量會污染全局空間。
3、這種模式經(jīng)常被使用在書簽工具(bookmarklets)中,因為書簽工具在任何頁面上運行并且保持全局命名空間干凈是非常必要的;
4、這種模式也可以讓你將獨立的功能封裝在自包含模塊中。
5、可以將這些代碼封裝進一個立即執(zhí)行函數(shù)中,并且確保頁面沒有它的情況下也能正常工作。
6、可以添加更多的加強模塊,移除它們,單獨測試它們,允許用戶去禁用它們等等。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容