js闭包怎么避免内存
若以下回答无法解决问题,邀请你更新回答
1个回答
2018-01-05 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
闭包是可以访问一个函数作用域里变量的函数,通俗的讲,闭包就是一个受到保护的变量空间,通过闭包可以返回局部变量。JavaScript中所有的function都是一个闭包,不过一般来说,嵌套的function所产生的闭包更为强大,也是大部分时候我们所谓的“闭包”:即在一个函数内部创建另一个函数,通过另一个函数访问这个函数的局部变量。主要应用闭包场合主要是为了:设计私有的方法和变量。
特点就是, 一般创建形式:当function里嵌套function时,内部的function可以访问外部function里的变量,加上return的是内部function时,就是一个闭包。
优点
1.不增加额外的全局变量。闭包可以把局部变量驻留在内存中,可以避免使用全局变量。
我们知道如果变量声明不加上var关键字,则默认为全局变量,这样会带来很多麻烦。比如:其他函数可能误用这些变量;造成命名冲突、全局对象过于庞大,影响访问速度等等。
2.保护函数内的变量安全,加强了封装性
3.在内存中维持一个变量(用的太多就变成了缺点,占内存)
缺点
1.常驻内存会增大内存使用量,使用不当很容易造成内存泄露。解决方法是在退出函数之前,将不使用的局部变量全部删除。
2.闭包会在父函数外部,改变父函数内部变量的值。所以,如果把父函数当作对象,闭包当作它的公用方法,内部变量当作它的私有属性,这时一定不要随便改变父函数内部变量的值。
特点就是, 一般创建形式:当function里嵌套function时,内部的function可以访问外部function里的变量,加上return的是内部function时,就是一个闭包。
优点
1.不增加额外的全局变量。闭包可以把局部变量驻留在内存中,可以避免使用全局变量。
我们知道如果变量声明不加上var关键字,则默认为全局变量,这样会带来很多麻烦。比如:其他函数可能误用这些变量;造成命名冲突、全局对象过于庞大,影响访问速度等等。
2.保护函数内的变量安全,加强了封装性
3.在内存中维持一个变量(用的太多就变成了缺点,占内存)
缺点
1.常驻内存会增大内存使用量,使用不当很容易造成内存泄露。解决方法是在退出函数之前,将不使用的局部变量全部删除。
2.闭包会在父函数外部,改变父函数内部变量的值。所以,如果把父函数当作对象,闭包当作它的公用方法,内部变量当作它的私有属性,这时一定不要随便改变父函数内部变量的值。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询