iT邦幫忙

2022 iThome 鐵人賽

DAY 16
0

即使函式已經執行結束,其內部的變數卻並未跟著消除,還能繼續被呼叫;這種能將外層變數「包」在內層暫存、使用的方式,就是所謂的「閉包」。

執行環境

執行環境(Execution Context,EC) 指的是 Javascript 底層在程式準備執行時,所建立的一個物件,主要是儲存了:

  • 內部的變數(Variable Object,VO;這也就是 Hoisting 發生的原因!)
  • 外部環境(也就是 作用域鏈,Scope Chain)
  • 這個環境的 this 值。

(圖片來源:參考)

function storeMoney () {
    var money = 1000;
    return function(price) {
        money = money + price;
        return money;
    }
}
console.log(storeMoney()(100));

回傳:1100

函式工廠

function storeMoney(initValue) {
    var money = initValue || 1000;
    return {
        increase: function (price) {
            money += price;
        },
        decrease: function (price) {
            money -= price;
        },
        value: function () {
            return money;
        }
    }
}
var MingMoney = storeMoney(100);
MingMoney.increase(100);
MingMoney.increase(100);
MingMoney.increase(100);
MingMoney.increase(100);
MingMoney.decrease(25);
MingMoney.decrease(96);
comsole.log(MingMoney.value());

回傳:379 , 2000

this→


上一篇
運算子 & 真假值
下一篇
THIS I
系列文
JavaScript亂記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言