闭包

1,什么是闭包

闭包就是能够读取其他函数内部变量的函数。

2,闭包的原理:

就是作用域访问原则,上级作用域无法直接访问下级作用域中的变量。

3,实现闭包要解决什么问题:

  闭包内的数据不允许外界访问,要解决的问题就是间接访问该数据。函数内部的函数中可以访问该函数中的变量,但是我们需要在函数外部来访问函数中的变量。

4,怎么解决:

函数内部的方法可以访问该函数中的变量,我们可以把这个方法return 出去,函数外部就可以调用这个函数内部的方法来访问函数内部的变量了。

   function foo(){
        var num =123;
        return function(a){
            if(a !== undefined){
                //如果传参了,就用来设置值
                num =a;
            }else{
                //不传参,用来获取值
                return num;
            }
          
          console.log(num);
        }
    }
   
   var fun1=foo();
   fun1(456);
   var num=fun1();
   console.log(num);

5,使用对象返回多个方法,来获取和设置值

  function fun (){
        var name ="jack"
        var age =18 
        return {
            getName:function(){
              return name;
            },
            setName:function(value){
              name = value;
            },
            getAge:function(){
              return age;
            },
            setAge:function(value){
              age = value;
            }
        }
    }
    var obj = fun();
    obj.setName("rose");
    console.log(obj.getName())

6,闭包的作用

基本作用:可以通过闭包返回的函数或者方法,来修改函数内部的数据。

保护作用: 创建一个私有的空间,保护数据,外部想要访问内部的数据,只能通过函数提供的方法,在这些方法中我们可以设置一些逻辑,让数据变得安全。

7,闭包一般和立即执行函数一起使用

for(var i=0 ;i<arr.length;i++){

  arr[i].onClick = (function(i){
          return function(){
            alert(i)
         }
    })(i)
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值