javascript闭包

闭包

用文字简单概括一下闭包

理论简述版:函数执行形成私有作用域,保护里面的私有变量不受外界干扰,这种保护机制称为闭包。

市面共识版:函数执行形成一个不销毁的私有作用域,称为闭包。

代码简单实现

//柯里化函数
function fn(){
    return function(){}
}
var f = fn();

//惰性函数
var util = (function(){
    return {}
})();

闭包项目实战应用

真是项目中为了保证js性能(堆栈内存性能优化),应尽可能的减少闭包的使用,因为不销毁的堆栈内存耗性能。

闭包主要两个作用

保护:在多人团队开发中可能会造成全局变量污染(变量冲突),这时可以使用闭包,让自己的代码在一个私有作用域下,与他人代码互不干扰。

保存:只要有外部变量引用,作用域就不会销毁,所以作用域内的成员依然存在。

闭包的缺点

还是因为不销毁作用域,内部成员没有被释放,长时间占用内存造成内存泄漏。

解决办法

1、能不用闭包就不用闭包。

2、及时释放。

阮一峰闭包

 

内存溢出和内存泄漏

内存溢出

程序运行所需内存超出可用内存,就抛出内存溢出的错误,一般表现为程序崩溃。一般导致内存溢出的原因是计算量过大或者程序陷入死循环。

内存泄漏

占用的内存没有及时释放,内存泄漏积累多了容易导致内存溢出。

常见的内存泄漏:

1、意外的全局变量(函数内直接声明的全局变量,等函数执行完依然存在而没有被释放)。

2、定时器没及时清理。

3、闭包。

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值