iT邦幫忙

2021 iThome 鐵人賽

DAY 22
0
自我挑戰組

JavaScript 核心觀念系列 第 22

【Day22】立即函式(IIFE)

  • 分享至 

  • xImage
  •  

立即函式特點:

  • 立即執行
  • 無法在函式外再次執行

接著我們來看立即函式的語法

(function() {
    console.log('立即函式');
})();

此時能看見只要使用立即函式,函式內容會馬上執行,

因此才會回傳 '立即函式'

功能

以下會列出立即函式的功能

1. 限制變數作用域

在立即函式中的變數,其作用域只在函式內

(function() {
    const ming = '小明';
    console.log(ming);  // 小明
})();

console.log(ming);  // ming is not defind

能夠看見立即函式中的 ming 有被回傳,

但函式外的卻是 ming is not defind

2. 傳遞參數

(function(where) {
    console.log(where);
})('weiwei');

我們將 'weiwei' 代入立即函式中,能看見回傳 weiwei

而立即函式為表達式,因此可以使用 return 來將值賦予到變數中,

const whereWei = (function(where) {
    return where;
})('weiwei');

console.log(whereWei);

我們也可以使用兩個立即函式來傳遞值

const a = {};
(function(b) {
    b.person = 'weiwei';
})(a);

(function(c) {
    console.log(c.person);
})(a);

它會先由第一個立即函式中賦予 a 物件 person 屬性,

再由第二個立即函式將值回傳,

而這也能使用在 window

(function(global) {
    global.person = 'weiwei';
})(window);

(function() {
    console.log(person);
})();

這種方式主要會用在大型的框架上,

以 Vue2 為例:

Vue2 原始碼

我們能在開頭看到是使用立即函式將 Vue 的內容寫入全域當中

而結尾是將 Vue 的內容定義完後進行回傳

以上就是今天立即函式的內容了,感謝觀看!!


上一篇
【Day21】什麼是函式?
下一篇
【Day23】參數
系列文
JavaScript 核心觀念30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言