1. 程式人生 > >重回js--立即執行函數

重回js--立即執行函數

遙想當年 執行函數 display -- 公司 函數表達式 auto 技術 window

  公司換了新領導,對調休請假控制很嚴格,就算沒工作也不能請假回家過年,我只申請了3天調休。為了不用大過年返程回來上班,年前要堅守到最後一天了。想到三十要在北京機場過夜,真是心塞塞。所以為啥不再努力點兒,讓自己有更多選擇呢,是吧。  

  趁沒有任務,重新來系統地學一遍js,把之前不明覺厲的細節知識補起來。第一篇,就來說說函數表達式之立即執行

  先上段代碼,看下什麽格式是立即執行函數:

技術分享圖片

  foo這個函數被包在了()裏,這時,它就由一個全局函數變為了一個函數表達式;通過末尾加一個(),進行立即執行的動作。

  總結:(function xxx(){....})() 這種形式存在的代碼就是立即執行函數表達式;術語:IIFE;這裏的函數名xxx是非必需的;

  另外還有一種格式的IIFE也被廣泛使用:

技術分享圖片

  這兩種形式和功能上是一致的,習慣哪個就寫哪個。

  立即執行函數也可以傳入參數:

技術分享圖片

  怎麽樣,看到這個window是不是很熟悉了;在一開始沒有seaJS等模塊化插件時候,我們就是用這種方式來做 “模塊化” 的。遙想當年微信H5開發時候,什麽大轉盤,搖一搖,刮刮樂,也是寫了不少插件。。。每次翻看以前的代碼,都有濃濃的時代感。

  另外,書中介紹了立即執行函數表達式的另外一種用法,本coder表示太淺薄從來沒看到過。。。這裏上代碼和書中原話,做個知識備份

  技術分享圖片

  這種寫法的作用是倒置代碼的運行順序,將需要運行的函數放在第二位,在匿名函數執行之後當作參數傳遞進去。

重回js--立即執行函數