浅谈JavaScript中的闭包现象
闭包是什么?
在讲闭包前先来聊一下JavaScript的垃圾处理机制,JavaScript具有自动垃圾回收机制,也就是说执行环境会管理代码执行过程中使用的内存,垃圾收集器会周期性地找出那些不再继续使用的变量,然后释放其内存,而不再使用的变量只可能是局部变量,全局变量生命周期直至浏览器卸载页面才会结束,局部变量只在函数执行的过程中存在,而这个过程中会为局部变量在栈区或者堆区中分配相应的空间,以存储它们的值,然后在函数中使用这些变量,直至函数结束!
一个函数嵌套了一个里层函数,当里层函数调用外层函数的变量,并且当我们调用里层函数时,闭包就形成了!
如下代码所示
function aa(){ var a=1; return function(){ a++; console.log(a); } } var fn=aa(); fn();fn();fn();程序输出依次为2,3,4;说明在这个过程中局部变量的变化值被保存了下来,缺点就是相应的会造成内存泄露!因此当我们不想让局部变量销毁时,我们就可以使用闭包了!
浙公网安备 33010602011771号