浅谈JavaScript中的闭包现象

闭包是什么?

在讲闭包前先来聊一下JavaScript的垃圾处理机制,JavaScript具有自动垃圾回收机制,也就是说执行环境会管理代码执行过程中使用的内存,垃圾收集器会周期性地找出那些不再继续使用的变量,然后释放其内存,而不再使用的变量只可能是局部变量,全局变量生命周期直至浏览器卸载页面才会结束,局部变量只在函数执行的过程中存在,而这个过程中会为局部变量在栈区或者堆区中分配相应的空间,以存储它们的值,然后在函数中使用这些变量,直至函数结束!

一个函数嵌套了一个里层函数,当里层函数调用外层函数的变量,并且当我们调用里层函数时,闭包就形成了!

如下代码所示

function aa(){ var a=1; return function(){ a++; console.log(a); } } var fn=aa(); fn();fn();fn();

程序输出依次为2,3,4;说明在这个过程中局部变量的变化值被保存了下来,缺点就是相应的会造成内存泄露!因此当我们不想让局部变量销毁时,我们就可以使用闭包了!

posted on 2017-09-26 22:49  九把刀  阅读(175)  评论(0)    收藏  举报

导航