JavaScript中闭包的使用
在 JavaScript 中,实现外部作用域访问内部作用域中变量的方法叫做闭包,这得益于高阶函数的特性:函数可以作为参数或者返回值。
在 bar() 函数执行完后,局部变量 local 将会随着作用域的销毁而被回收。但是注意这里的特点在于返回值是一个匿名函数,且这个函数中具备了访问 local 的条件,虽然在后学的执行中 ,在外部作用域中还是无法直接访问 local,但是若要访问它,只要通过中间函数稍作周转即可。
实际上,闭包是 JavaScript 的高级特性,利用它可以产生很多巧妙的效果,它的问题在于,一旦有变量引用了这个中间函数,这个中间函数将不会被释放,同时也会使原始的作用域不会得到释放,作用域中产生的内存占用也不会得到释放,除非不再有引用,才会逐步释放。