闭包函数及应用

本文解释了JavaScript中的闭包概念,即函数与其引用环境的组合。重点介绍了如何在函数内部创建闭包,利用闭包实现计数器功能,以及闭包如何保持对外部变量的持久引用。
摘要由CSDN通过智能技术生成

闭包(closure)是一个函数和它所引用环境的组合。创建闭包的常见方式是在一个函数内部创建另一个函数,而该内部函数可以访问外部函数的局部变量,当外部函数执行完毕后,通常那些局部变量会被垃圾收集器回收,但因为闭包的存在,这些变量会继续存在于内存中。

// 闭包  内部函数可以访问外部函数的变量
        // 创建一个函数 fun1  内部函数 fun2  闭包
        // 内部函数 fun2  闭包  可以访问外部函数 fun1 的变量 i
        // 我们可以用闭包  实现一个计数器  使得每次调用 fun1 都会返回一个新的计数器函数
        // 使得每次调用 fun1 都会返回一个新的计数器函数  使得内部函数 fun2  闭包  可以访问外部函数 fun1 的变量 i
            function fun1() {
                let i = 0;
                // 内部函数,闭包,将 i 的值保留在内存中
                function fun2() {
                    i++;
                    console.log(i);
                }
                // 返回 fun2 函数
                return fun2;
            }
            // 调用 fun1 函数并将返回的 fun2 函数赋给 inner 变量
            let inner = fun1();
            inner();//1
            inner();//2
            inner();//3
            // 调用 fun1 函数并将返回的新的 fun2 函数赋给 inner2 变量
            let inner2 = fun1();
            inner2();//1
            inner2();//2

如果不返回fun2的值的时候输出fun的一的值时候就会出错

因为你写了并没有执行,并没有返回所以会是错的

当返回fun的2的值时,就在执行inner1时,每次执行一次i就会加1

如果新创建一个变量里面包含fun1时,里面的值就会从i的初始值开始算

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值