iT邦幫忙

0

JS 立即函式 DAY61

有關函式的基礎介紹
可參考我之前發的文章
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); // 小明
})();


那今天的介紹就到這裡
若有任何問題 或 內容有誤
可以跟我說唷/images/emoticon/emoticon41.gif


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
rita98076
iT邦新手 5 級 ‧ 2020-11-17 11:21:13

感謝分享

/images/emoticon/emoticon37.gif

我要留言

立即登入留言