闭包学习

闭包是指一个函数或一个函数的引用与一个引用环境(外层函数)绑定在一起,而这个环境存储着该函数的每一个非局部变量(也就是这些变量不在该函数内部,而是在外层函数)的表
在这里插入图片描述
在这里插入图片描述

闭包就是在函数里返回一个函数,内层函数引用着外层函数的变量,所以不会被释放掉,一直保存着该变量改变后的值,并且在外面用一个变量接着所返回的函数就可以使用内层函数并传参啦,
场合:需要反复使用一个函数
如下例子:

 function parent(){
            var total=1000;
            return function(money){
                total-=money;
                console.log(total);
            }
        }
        var pay = parent();
        pay(100);
        pay(100);
        pay(100);

在这里插入图片描述
函数外部不能访问函数内部的变量,而很多时候是需要访问函数内部的变量的,因此就需要用到闭包,原理如下:
在这里插入图片描述

上面图片展示的就是:函数内部再定义一个函数用于获取这个变量,然后返回这个函数,这样就相当于外部函数返回自身的变量,再把外部函数赋给一个变量,这样在最外部就能接受到外部函数的变量了。
这样就可以访问func函数内的num了,因此调用result后,输出结果为999
在这里插入图片描述
因为有两个函数所以调用的时候也要写两个括号
内部函数是闭包,所以闭包就是将函数内部和函数外部连接起来的一座桥梁
https://www.cnblogs.com/cxying93/p/6103375.html
在这里插入图片描述
调用result输出为999;
调用nAdd后num为1000,但没有打印出来,存在内存中
再调用result打印结果为1000
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
过程解析:
1、obj.getNameFunc打印结果为getNameFunc的属性值,也就是冒号后面的全部内容
2、obj.getNameFunc()打印结果为闭包内容,也就是
在这里插入图片描述
3、obj.getNameFunc打印结果为the window,因为从上面学习中知道,无论这个闭包存在哪里,闭包里的this均指向了window,所以打印出来的是全局变量name
闭包常用于银行的接口转账
在这里插入图片描述
把一个函数赋给一个变量时,这个变量就变成了一个函数,因此如上所述,zhuanzhang后面要加()
总的来说闭包用途就是保护重要的东西,除了上面的钱还阔以是指纹等重要信息,这样就可以实现通过层层验证才能转账

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值