iT邦幫忙

2021 iThome 鐵人賽

DAY 27
0
Modern Web

JavaScript 筆記 2 版系列 第 27

JavaScript Day27 - IIFE (立即函式)

IIFE

  • IIFE (立即函式):IIFE (Immediately Invoked Function Expression) 是一個定義完馬上就執行的 function
  • 語法:(function)(),可以看到就是用 2 組 () 進行,第 1 個 () 包覆 function,可在第 2 個 () 帶入參數
  • function 內設定的變數不會影響全域
  • 變數接收回傳的值,而不是 function
function funa() {
    let a = "a";
    console.log(a);
}
// 沒有呼叫 funa() 不會執行

(function () {
    let b = "b";
    console.log(b);
})();

console.log("c");
console.log(b);
// b
// c
// Uncaught ReferenceError: b is not defined

設定變數

(function (name) {
    console.log(`My name is ${name}`);
})('Barry'); // My name is Barry

賦予值給變數

let result = (function () {
    let name = "Barry";
    return name;
})();

console.log(result); // Barry
console.log(typeof result); // string

for 迴圈,間隔時間印出

// 秒數不 *i 會在秒數到後一次輸出全部
for(var i = 0; i < 5; i++){
    setTimeout(function(){
        console.log(i)}
    ,1000 * i)
}
// 5 5 5 5 5

for(var i = 0; i < 5; i++){
    (function(num){
        setTimeout(function(){
            console.log(num)}
        ,1000 * i)
    })(i)
}
// 0 1 2 3 4

for(let i = 0; i < 5; i++){
    setTimeout(function(){
        console.log(i)}
    ,1000 * i)
}
// 0 1 2 3 4

參考資料

MDN IIFE
JavaScript基本功修練:Day22 - 回傳函式與立即函式(IIFE)
重新認識 JavaScript: Day 18 Callback Function 與 IIFE
立即函式 IIFE
Day20 立即呼叫的函式表示式(IIFE)
[筆記] 談談JavaScript中的IIFEs(Immediately Invoked Functions Expressions)

次回

補充一下網路請求的資料


上一篇
JavaScript Day26 - Async、Await
下一篇
JavaScript Day28 - HTTP 網路請求
系列文
JavaScript 筆記 2 版31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言