谈谈js中的闭包

只谈情不闲聊 提交于 2020-02-29 01:31:50

前言:

       我们这次来谈谈js中的闭包。

首先:闭包是个什么东西呢?

简单来说:闭包就是能访问其他函数内部变量的函数,也可以说被嵌套的函数就叫做闭包函数

举例: 
function  add(){
        var count =0 ;
        function fun(){
           return count++ ;
        }
   return fun;
}
 var f1 =add();   
//f1 ==fun :把局部的变成全局的,延长生命周期,每次通过f1来调用上面的方法后,这个方法在内存中一直存在着,count也存在着
console.log(f1());

//这里结果就是1 ,它的运行思路就是,f1()的时候,调用我们add()函数里面return的函数fun(),然后又调用count++ ,所以这里最终结果为 1

 

 

再来:说一说使用闭包的优点:

1>    正常函数执行完毕后,里面声明的局部变量被垃圾回收处理掉,但是闭包1可以让作用于里的变量,在函数执行完成后依旧保持没有被垃圾回收机制处理掉

2>   可以读取函数内部的变量,让这些变量的值始终保持在内存中

3>    增加块级作用域

 

最后:说一说使用闭包应该注意的事项:

使用闭包的注意事项:

 *   由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页性能问题,在IE中可能导致内存泄漏。

*    闭包会在父函数外部改变父函数内部变量的值。


*    写闭包一定要使用var,使用let的话,会失去闭包的意义。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!