有關函式的基礎介紹
可參考我之前發的文章
https://ithelp.ithome.com.tw/articles/10253184/draft
在我們之前使用的函式
我們都必須呼叫它
但我們若不想呼叫 但函式又會執行 要怎麼做呢??
這時候就可以用立即函式
立即函式(IIFE) 本身也是表達式
MDN: https://developer.mozilla.org/zh-TW/docs/Glossary/IIFE
// 立刻執行
// 無法在函式外被再次執行
(function IIFE(){
console.log('立即函式',IIFE);
}())
console.log(IIFE); // IIFE is not defined
當然我們也可以不用給予函式名稱
(function (){
console.log('立即函式');
}())
// 小括號也可以放外面
(function (){
console.log('立即函式');
})();
立即函式還有一個作用
就是限制變數的作用域
(function (){
var dog = '小黑'
console.log(dog);
})();
console.log(dog); // dog is not defined
立即函式傳參數
(function (hello){
console.log(hello);
})('你好');
// 由於立即函式本身也是函式表達式
// 所以會回傳值
var world = (function (hello){
console.log(hello);
return hello;
})('你好');
console.log(world);
立即函式內容傳到另一個立即函式內
var a = {};
(function (b){
b.person = '小明'
})(a);
// 要記得補上分號 因為不符合ASI規則
(function (c){
console.log(c.person);
})(a);
立即函式透過全域物件(wimdow)來傳遞值
通常運用在大型框架上
(function (global){
global.person = '小明'
})(window);
(function (){
console.log(person); // 小明
})();
那今天的介紹就到這裡
若有任何問題 或 內容有誤
可以跟我說唷