什么是闭包

闭包

  • 概念 : 内部函数包含外部函数的引用,并将其存在内部函数中
  • 产生原因 :
    1.函数嵌套
    2.内部函数引用外部函数的变量
    3.外部函数被调用
  • 闭包何时产生 : 当内部函数被定义时
  • 闭包何时销毁 :
    1.内部函数未曾被调用
    2.内部函数为垃圾对象时,即被null赋值
  • 闭包的作用
    1.延长局部变量的生命周期
    若未产生闭包,一个函数运行完毕时,内部的变量就会成为垃圾,会被js引擎自动回收,但若该函数有内部函数并调用了这个函数内部的某个变量时,就产生了闭包,该变量就与这个闭包函数共生
    以上有一点需要注意,若该闭包函数时作为外部函数的返回值,则需在使用完毕后,将该闭包函数变成垃圾对象,即将其指向null,否则会造成内存泄露,此举过多很容易就造成内存溢出,故不切勿随意使用闭包
    2.读写外部函数的局部变量,此处需记住只能修改引用类型的值
		function test() {
            var a = 1;
            var obj = {
                name: "zh"
            }
            return function () {
                // debugger;
                console.log(obj.name);
                return obj;
            };
        }
        var fn = test();
        var obj = fn();     	//zh
        obj.name = "zzzzzzz";
        fn();       			//zzzzzzz
  • 闭包的缺点
    1.长时间拥有局部变量,且不释放
    2.使用过多容易引起内存问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值