闭包学习整理

什么是闭包
概念:是js中函数的一种高级应用方式
作用:调用函数中局部作用域变量,在函数之外可以直接使用。正常情况下只能使用return返回局部作用域变量的数值,要想调用使用int就必须要使用闭包。return只能返回一个数值,使用闭包的形式可以返回调用多个数值

闭包的执行条件
要使用执行闭包,必须要有3个条件,缺一不可
①在函数A中直接返回一个函数B,函数A的返回值是另一个函数B
②函数B中调用使用函数A中的局部作用域变量
③函数A外部有一个变量存储接收函数B

闭包的特点:优点同时也是缺点
①函数执行空间不会被销毁
优点: 空间中的内容永远存在
缺点: 会占用大量的内存空间
②可以从函数外部调用,使用函数内部的数据
优点: 调用数据更加方便
缺点: 容易泄露数据信息,不安全
优点: 私有变量不会被销毁
缺点: 私有变量存储占用空间

            // 定义一个函数A
        function funA(){
            // 函数A中有一个局部作用域变量
            var int1 = 100;
            var int2 = 200;
            var int3 = 300;

            // 函数A返回值是另一个函数B
            // 函数A的执行结果,返回值就是函数B
            return function funB(){
                // 函数B中调用执行了函数A中的变量int3
                var int4 = int1;
                var int5 = int2;
                var int6 = int3;
                console.log(int4,int5,int6);
            }
        }
        const f = funA();
        funA();//执行结果为100,200,300
        console.log(int1);//在函数外无法直接使用 
        let int = 100 ; 
        console.log(int);//输出结果为100
        
        // 程序可以操作全局作用域变量
        int = 200;
        console.log(int);//输出结果为200
        
        // 函数也能操作全局作用域变量
        function fun1(){
            int = '北京';
            console.log(int);
        }
        fun1();//输出结果为北京

        function fun2(){
            // 局部作用域变量 / 私有变量只能被函数中的程序操作,函数外是无法操作的。确保int变量不会被误操作,也就不会造成全局变量濡染问题
            let int = 300;
            console.log(int);
            // 只能是通过闭包来调用使用int中存储的数据
        }
    fun2();//输出结果为300
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值