透過具名函式來執行立即函式:
(function IIFE () {
console.log('立即函式');
}());
也可以把名稱拿掉
(function () {
console.log('立即函式');
}());
()
位置也可放在函式外
(function () {
console.log('立即函式');
})();
範例:透過立即函式來限制變數的作用域
(function(){
var Ming = '小明';
console.log(Ming); // 小明
})();
console.log(Ming); // Ming is not defined
// 函式外無法取得 Ming
範例:也可以傳遞參數
var whereMing = (function (where){
console.log(where); // 小明在這
return where; // 宣告變數來儲存回傳值
})('小明在這');
console.log(whereMing);
範例:將立即函式傳到另一個函式內
var a = {};
(function(b){
b.person = '小明';
})(a);
(function(c){
console.log(c.person); // 小明
})(a);
範例:透過全域物件來傳值
常用在大型框架上;確保框架可正確的掛載到全域變數上
(function(global){
global.person = '小明';
})(window);
(function(c){
console.log(person); // 小明
})();