为什么通过 o2 对象调用 o1 方法。变量 a 不会被回收。
而直接通过 o1 自调用会被回收。他们两者函数执行的过程难道不一样吗。
o1 自调用是我模仿 o2 的执行过程写出来的。
为什么通过 o2 对象调用 o1 方法。变量 a 不会被回收。
而直接通过 o1 自调用会被回收。他们两者函数执行的过程难道不一样吗。
o1 自调用是我模仿 o2 的执行过程写出来的。
o1 方法是闭包
要了解闭包的特性,就要先了解函数与局部作用域。
一个函数在执行时会先创建一个局部作用域,之后在这个函数内声明的变量与子函数都会放到这个局部作用域中。
闭包是指子函数会与其所在的局部作用域绑定在一起。只要这个子函数存在,子函数所在的局部作用域和局部作用域中的局部变量就一直存在,不会被系统回收。可以让子函数内始终能访问局部作用域中的局部变量。