Discuss / JavaScript / 闭包保留的是变量的指针吗?

闭包保留的是变量的指针吗?

Topic source

老师,可以把闭包理解为保留了后面要用到的变量的指针吗?

是保留整个函数的变量还是只保留会用到的变量?

廖雪峰

#3 Created at ... [Delete] [Delete and Lock User]

闭包实现很复杂,简单理解为捕获了当前执行状态的函数

匿名对象(没有被引用的对象)就会被垃圾回收,如果函数返回了一个子函数(子函数中有自由变量,使用了父函数的变量),那么当函数执行完后,就会将这次执行的上下文(VO)通过返回的子函数(函数的内部属性[[scope]]保存着在堆中创建的对象的引用,这样就不会被垃圾回收了)从而得到保存.

也就是函数闭包(VO)的生命周期得到了延长

调试知道是 闭包只保留以后会用到的变量的值


  • 1

Reply