彻底理解闭包

执行环境(execution context):定义了变量或函数有权访问的其他数据。每个执行环境对应一个「变量对象」。

变量对象(variable object):包含当前能够访问的所有变量、函数总和。即是 this 所代指的内容。

作用域链:本质是一个指向变量对象的指针表,当代码被执行时就会被创建,包含有序的变量对象。(自己可以理解为一个数组[当前变量对象,上一级变量对象……全局变量对象])

活动对象(activation object):当代码进入一个环境,而此环境是一个函数时,则变量对象 = 活动变量,初始包含 arguments 对象,传入的参数变量。

闭包:有权访问另一个函数作用域中的变量的函数。

闭包的本质是什么? 当某个函数被调用,创建一个执行环境(execution context)及作用域链,重点是,此时闭包的作用域链包含了外部函数的活动变量,由于存在引用,内存不会回收外部函数的活动变量,直到闭包被销毁。


Last Updated: 9/11/2019, 8:53:50 AM