什么是闭包?

        闭包的官方解释是:一个函数对周围状态的引用捆绑在一起,内层函数中访问到其外层函数的作用域。

        简单意思就是:闭包=内层函数+外层函数的引用

        

function outer(){
    //上层代码的引用
    const a=1
    //内层代码
    function f(){
    conso.log(a)    
    }
    f()//调用
}
outer()//调用

细心的已经发现了,怎么样在外部直接调用内部呢?直接调用肯定不行,这个时候就需要用return了

function outer(){
    //上层代码的引用
    let a=1
    //内层代码
    return function f(){
    conso.log(a)    
    }
    f()//调用
}
const fn=outer()
fn()
//调用

这样写的话就可以把里面的值return出来,外面就可以直接调用啦!

闭包的私有化怎么实现?

        举个栗子:(普通函数)

//统计调用的次数
let i=0;
function fn(){
    i++
    console.log("调用了i次")
}
fn()//结果为1
fn()//结果为2
//但是如果我修改了i的值呢?
let i=1000
fn()//这个值为多少呢?思考一下=>答案为1001  因为let为全局变量,修改let值会影响console.log的值

但如果是以闭包的形式呢?

function fn(){
    let count=1
    function fun(){
        count++
        console.log("i")
    }
    return fun
}
const resule=fn()

这样写的话就是避免修改值从而影响结果了,就比如说我有一个打火机,别人可以借来用,但是别人不能给顺走了。带入到代码中来就是实现了闭包的私有化。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值