通俗易懂的闭包

不知道为什么,看到闭包这两个字感觉贼亲切,哈哈哈。

闭包

  • 闭包的概念(简单粗暴形象点):

函数中内嵌另一个函数,或者是一个函数中有另一个对象,里面的函数或者是对象都可以使用外面函数中定义的变量或者是数据,此时就形成了闭包。

(什么还是不懂?感慨自己智商感人,索性再写的大白话点,让自己对闭包有个好点的认识。函数A中,有一个函数B,函数B中可以访问函数A中定义的变量或者数据,此时就形成了闭包。) 

  • 闭包的模式(两种):函数模式的闭包对象模式的闭包
  • 闭包的作用:

缓存数据,延长作用域链,优点也是缺点,闭包会导致原有作用域链不释放,造成内存泄露。(局部变量是在函数中,函数使用结束后局部变量就会被自动释放,闭包后里面的局部变量的使用作用域链就会被延长)

(下面就上两个小栗子) 

小栗子1:

function f1(){
    var num = 10;//缓存数据
    return function(){
        num++;
        return num;
    }
}

var ff = f1();
console.log(ff());//11
console.log(ff());//12
console.log(ff());//13

小栗子2:

//闭包的方式产生相同的随机数
function f1(){
    var num = parseInt(Math.random() * 10 + 1);
    return function () {
        console.log(num);
    }
}

var ff = f1();
ff();//7
ff();//7
ff();//7
//答案数字随机(1-10);

注:(内部函数被保存到了外部一定生成闭包。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值