js闭包

简述

  闭包(closure)是一个函数以及其捆绑的周边环境状态的引用的组合。换而言之,闭包让开发者可以从内部函数访问外部函数的作用域。在 JavaScript 中,闭包会随着函数的创建而被同时创建。

  闭包指有权访问另一个函数作用域中变量的函数——JS高级程序设计

闭包的例子

  变量num的作用域是fn,我们可以在fun函数内访问fn作用域内的变量,这里的fun就是闭包函数

function fn() {
    let num = 0;
    function fun() {
        console.log(num);
    }
    fun();
}
fn();

  再看下面这个例子,fn函数内的返回值是fun,就是返回的是fun函数的"定义",我们可以调用由fn()返回的fun函数,实现了在外部作用域访问fn作用域中的变量num的效果

function fn() {
    let num = 0;
    function fun() {
        console.log(num);
    }
    return fun;
}
let f = fn();
f();//f()其实和fn()()等价

  这里例子也可以写成

function fn() {
    let num = 0;
    return fun() {
        console.log(num);
    }
}
let f = fn();
f();

闭包的作用

  闭包的最大作用就是延申了变量的作用范围,我们可以在函数外部访问函数内部作用域的变量

References

  https://zhuanlan.zhihu.com/p/158430253

  https://www.bilibili.com/video/BV1DY41177dM?p=67&vd_source=a58d0aa3591cdd200c549746ed2ffa7a

 

posted @ 2022-08-15 14:31  艾尔夏尔-Layton  阅读(126)  评论(0编辑  收藏  举报