【JavaScript 二部曲】立即函式 IIFE

Helena Chang
Hello Front-End
Published in
Dec 13, 2020

何謂立即函式 (Immediately Invoked Function Expression) ?

定義 JavaScript 函式後,在其他地方即可呼叫函式執行程式動作。而函式可以不需要經過命名,且不需要透過呼叫,即可直接執行特定的程式動作,稱為" 立即函式(IIFE) "。

//具名函式: 若 function 沒有名稱,即無法執行程式。function functionA ( ) {  // "functionA"為函式名稱   console.log ('test_success');}functionA( );

立即函式特點

  1. 立刻執行。
  2. 無法在程式外被再次執行。
若將 console.log (IIFE) 移到程式外,函式無法再次被執行。

立即函式程式範例

在具名函式外層加上小括號( ),最後面再加一個括號( )。
此時即使沒有呼叫 functionA ( ),程式仍可立即執行動作。

//以"具名函式"改為"立即函式"(function functionA ( ) {    console.log ('test_success');})( );
//立即函式範例
(function( ) {console.log ( 'IIFE' );})( );

立即函式的應用

  1. 限制變數的作用域
在程式外層即無法取得函式變數。

2. 傳遞參數

如何將立即函式內容傳遞給另一立即函式 ?

method 1

var a = { };(function(b) {   b.fruit = 'apple' ;})(a);(function(c) {   console.log(c.fruit);})(a)

method 2:將 a 改為 " window " ; b 改為 "global "。

(function(global) {   global.fruit = 'apple' ;})(window)  // window 為全域物件;(function(c) {    // 此立即函式並未帶任何參數   console.log(fruit);})()

--

--

Helena Chang
Hello Front-End

時間也許會逝去,但沒有所謂浪費與否, 因為所有過去都乘載了養分,引領我飛向更璀璨的未來!