javascript闭包函数篇(1)

为什么闭包函数能够让局部变量的值始终保持在内存中?

《JavaScript权威指南》里面有这样一段话:每次调用函数,都会为之创建一个新的对象来保存局部变量,然后把该对象添加至作用域链中(每次调用就创建一个新的,调用多少次,创建多少个,执行结果互不影响)。当函数返回时,本来应该是直接从作用域链中将这个对象删除,但是闭包的出现让这一切变得不简单。当返回的是一个嵌套函数的时候,就会有一个外部的引用指向这个嵌套的函数,可以理解为外部对它进行调用,或者赋值给某个变量,在js垃圾回收机制中,一旦某个变量不再被引用,那么这个变量将会被回收。由此可见之前绑定在作用域链上的对象由于闭包的关系不会被当做垃圾回收,这也就是闭包能够让局部变量的值始终保持在内存中的原因

猜你喜欢

转载自blog.csdn.net/zero_person_xianzi/article/details/85014625