js中的闭包理解

js中的闭包理解

什么是闭包?闭包是js中的一个特点也是一个知识难点,闭包的作用是什么?优劣势优势什么?
我们知道在定义一个全局变量的时候,如果在不知道前面的代码的情况下,不小心定义了同一个变量名,则前面的代码运行结果会受到影响,为了避免这种影响,于是就有了闭包。
闭包可以解决全局变量污染的问题,特点是在一个函数中声明变量(此时的变量是局部变量,不影响全局变量),同时在该函数中再定义一些函数,闭包的特点就是函数套函数:

 function myFn(){
       var i=0;
       function aa(){
          return i++;
       }
       return aa;
   }
   var fn=myFn();

在闭包中声明变量,里面的值不会受到函数外的同名变量影响,但闭包的缺点是内存泄漏。
什么是内存泄露?程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出(内存不够用)。
我们知道函数只有在调用时会发挥作用,不调用是会被释放内存的;但是我们看到上面的闭包函数作为一个值给了一个全局变量,这种情况下是清不掉的,这就造成内存泄露。这样的闭包函数多了,最后的结果就是内存溢出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值