動態

詳情 返回 返回

JavaScript 閉包 - 動態 詳情

概述

閉包就是指有權訪問另一個函數作用域中的變量的函數

概念

機制

當前函數執行,會形成一個私有的上下文,函數執行完後,當前執行上下文中的某些內容,被當前上下文以外的內容所佔用,那麼當前上下文就不能被釋放。

思路

  1. 函數執行 -> 形成私有上下文環境。
  2. 函數執行完成 -> 當前執行上下文環境中的某些內容,被當前執行上下文外的內容所引用。
  3. 當前執行上下文不能被釋放 -> 當前執行上下文中的變量就不會銷燬釋放。

例子

const a = 4;
function f(a) {
    let variate = 4;
    const c = function () {
        // 2. 函數 f 執行完成 ,執行函數 f 時形成私有的上下文環境中的變量 variate 被函數 c 中的內容所引用
        // 每次調用 result() 都會從 函數 f 的執行上下文中尋找變量 variate 來引用
        variate++;
        console.log(variate + a);
    }
    return c;
}

// 1. 執行函數 f ,會形成 f 私有的上下文環境
const result = f(a);
// 3.  函數 f 並沒用被釋放,變量 variate 也就沒用被銷燬,而是還存在

// 每次運行 result() 使用的 variate 會遞增
result(); // 9
result(); // 10
result(); // 11
result(); // 12
user avatar toopoo 頭像 dingtongya 頭像 linlinma 頭像 front_yue 頭像 littlelyon 頭像 anchen_5c17815319fb5 頭像 hard_heart_603dd717240e2 頭像 u_17443142 頭像 shuirong1997 頭像 jiavan 頭像 xiaolei_599661330c0cb 頭像 yqyx36 頭像
點贊 101 用戶, 點贊了這篇動態!
點贊

Add a new 評論

Some HTML is okay.