闭包本质

理解要点:

1,函数定义时的作用域到函数执行时作用域依然有效。函数的执行依赖于变量的作用域。

2,讲作用域链描述为一个对象列表,每次调用js函数的时候,都会为之创建一个新的对象来保存局部变量,把这个对象添加至作用域链中,当函数返回的时候,如果不存在嵌套函数,也没有其它引用指向这个这个绑定的对象,就会被回收掉。

而闭包则是在函数定义了嵌套函数,并将它作为返回值或存储在某处的属性里,这时就会有一个外部引用指向这个嵌套函数,就不会被当作垃圾回收,内存不能释放。

原文地址:https://www.cnblogs.com/zwjun/p/11446535.html