JavaScript 闭包

作者: 四冥 | 来源:发表于2022-06-19 22:13 被阅读0次

    概述

    闭包就是指有权访问另一个函数作用域中的变量的函数

    概念

    机制

    当前函数执行,会形成一个私有的上下文,函数执行完后,当前执行上下文中的某些内容,被当前上下文以外的内容所占用,那么当前上下文就不能被释放。

    思路

    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
    

    相关文章

      网友评论

        本文标题:JavaScript 闭包

        本文链接:https://www.haomeiwen.com/subject/tvhdvrtx.html