JavaScript-闭包closure

本文探讨了闭包的概念,包括其定义——子函数访问父函数变量,以及特点如函数作为数据和变量持久性。重点讲解了闭包如何扩展变量作用域并可能导致内存泄漏,同时提供了解决内存泄漏的方法。最后介绍了闭包在实际编程中的应用场景和注意事项。
摘要由CSDN通过智能技术生成

是一种特殊的函数,能够访问函数作用域中的变量()

(1)函数内部变量不能拿到外面使用

(2)闭包的定义: 一个作用域可以访问另外一个函数内部的局部变量,或者说一个函数(子函数)访问另一个函数(父函数)中的变量,此时就会有闭包产生,那么这个变量所在的函数我们就称之为闭包函数。

function fn(){
    let num=123//这个值一直在,不会丢
    //函数也是值,也是一种数据
    return  function fn1(){console.log(num)}//闭包函数
}
let re=fn();//此时已经结束了
re()//但是re可以继续访问

①函数也是数据

②不调用就是本身的值,调用了就是里面的代码

闭包的优缺点(主要作用):

  1. 延伸了变量的作用范围
  2. 因为闭包函数中的局部变量不会等着闭包函数执行完就销毁,因为还有别的函数使用它,要等到所有函数都调用完他才会销毁
  3. 闭包会造成内存泄漏(在退出函数之前将不使用的局部变量删除)
  4. 解决办法:手动释放

✿✿✿注意:
1.闭包会在父函数外部,改变父函数内部的变量的值,所以,如果把父函数当做对象(object)使用,把闭包当做他的公用方法,把内部变量当做他的私有属性,这时要小心,不要随便改变父函数内部的变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值