javascript 的立即呼叫的函式表示式-Immediately Invoked Functions Expressions(IIFE)

標籤: javascript

當我們利用 Functions Expressions 定意函式:

var hello = function(name){
	console.log('Hello ' + name);
};

 

要呼叫的時候會像這樣:

hello("John");  // 'Hello, John'

 

那如果我們把 function 改成這樣:

var hello = function(name){
	console.log('Hello ' + name);
}();

 

他會變成

'Hello, undefined'

 

在程式裡面看到 () 就會自動執行,也就是在 function 後面加上 () 後就會自動執行那個 function,這個就叫所謂的 Immediately Invoked Functions Expressions(IIFE) ,中文一般稱為立即呼叫的函式表示式。

 

上面那個範例要傳入變數的話可以這麼寫就好:

var hello = function(name){
	console.log('Hello ' + name);
}("Tom");

這樣就不會出現 undefined 了。

 

如果沒有要用 var 定義 function 的話可以寫成這樣:

(function() {
  console.log ( 'IIFE' );
})();

如果你的程式裡面有一段東西是只需要執行一次,就可以使用這種方法,而這種表示式在一個程式裡面也就只會執行一次,要特別注意。