立即函是是Javascript中一種可以立即執行的函式,其本質其實是個函式表示式。下面程式碼代表著一個簡單的立即函式。
(function(){
// my special code
}());
其中的括號()代表的就是立刻執行該函式。在語法上,括號()也可以被放到左括號)外面,像是這樣。
(function(){
// my special code
})();
1.全域變數的減少:
寫程式難免會用到一些變數,但要避免變數暴露在全域之中,唯一的方式就是把它包裹在函式之中,或許你以前也有減少全域變數的觀念,所以你把程式碼寫在一個函式中,然後再呼叫它。現在你其實可以不需要這樣做,因為有立即函式的存在,所以你可以把程式碼包裹在立即函式中,然後放在它該出現的位置,在也不用看到一個init()(譬如說啦..)的呼叫,然後要拉到程式碼最下方去看這init()在做啥了。
2.全域變數區域化:
看到JQuery的範例了嗎,他把全域變數window當成參數傳遞給立即函式中,因此在函式中,window就變成了區域變數。這樣做是因為Javascript在看到變數時會先查找區域變數,然後再查找全域變數,因此全域變數變成區域變數在效率上有些微的提升。另外也可以最小化變數名稱,一般Javascript最小化的程式並不會對全域變數進行壓縮(因為不安全),但區域變數就可以。因此全域變數區域化可以減少檔案的大小。當然你也可以自己來最小化。
(function( w, u) {
....
})( window );
沒有留言:
張貼留言