當我們利用 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' ); })();
如果你的程式裡面有一段東西是只需要執行一次,就可以使用這種方法,而這種表示式在一個程式裡面也就只會執行一次,要特別注意。