闭包的概念、作用
当在函数内部定义了其他函数时,就创建了闭包(closures)。闭包有权访问函数内部的所有变量,原理如下:
- 当某个函数被调用时,会创建一个执行环境及相应的作用域链,然后,使用arguments和其他命名参数的值来初始化函数的活动对象。
- 在后台执行环境中,闭包的作用域链包含着他自己的作用域、包含函数的作用域和全局作用域。
- 通常,函数的作用域及其所有变量都会在函数执行结束后被销毁
- 但是,当函数返回一个闭包时,这个函数的作用域将会一直在内存中保存直到闭包不存在为止,即当函数返回闭包后,其执行环境的作用域链会被销毁,但他的活动对象仍会留在内存中,直到匿名函数被销毁后,函数的活动对象才会被销毁。
- 闭包只能取得包含函数中任何变量的最后一个值。