js闭包的必要条件及创建和消失(生命周期)

本文详细阐述了闭包的概念、产生条件、消失机制以及在实际项目中的应用。重点讲解了闭包如何影响函数间的独立性,并强调其在前端开发中的重要性。

>创建闭包的必要条件:

1.函数嵌套

2.内部函数引用外部函数的变量

3.将内部函数作为返回值返回

>闭包是什么?

就是可以访问外部函数(作用域)中变量的内部函数

> 闭包是什么时候产生的?

- 当调用外部函数时,闭包就已经创建了

- 外部函数每调用一次就会产生一个闭包,

闭包和闭包之间是相互独立的

>闭包是怎么消失的?

- 直到内部函数被GC(垃圾回收)后才消失

function outer() {
      var n = 0;
      function inner() {
        n++;
        console.log('inner ->',n);
      }
      function inner2() {
        n++;
        console.log('inner2 ->',n)
      }
      // 将内部函数存储到一个对象中返回
      return {inner:inner,inner2:inner2};
    }
    var obj = outer();
    var obj2 = outer();
    console.log(obj); // 打印的是 {inner: ƒ inner(), inner2: ƒ inner2()}
    obj.inner();// 初次n++ 打印的是1
    obj.inner2();// 二次n++ 因为改变的是同一个变量 打印的是2

    // obj2是单独的函数调用,所以产生的闭包和obj之间是独立
    obj2.inner();// 初次n++ 打印的还是1
    obj2.inner2();// 二次n++ 因为改变的和obj2.inner()改变的是同一个变量 打印的是2
    
    console.log('outer',outer); // 打印的是 'outer',f outer(){}...
    var out
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值