什么是闭包(closure)?
闭包是一种特殊的函数。如何生成一个闭包?
当一个内部函数引用了外部函数的数据(变量/函数)时, 那么内部的函数就是闭包
所以只要满足”是函数嵌套“、”内部函数引用外部函数数据“闭包特点:
只要闭包还在使用外部函数的数据, 那么外部的数据就一直不会被释放
也就是说可以延长外部函数数据的生命周期闭包注意点:
当后续不需要使用闭包时候, 一定要手动将闭包设置为null, 否则会出现内存泄漏
1 | function test1() { |
- 默认情况下,外部是不能访问内部的函数的数据的,比如不能访问i,如果不用闭包,i在函数 test2的}时候,已经销毁了,哪里能访问?就是生命到期了,用了闭包之后,就可以访问i了,因为闭包可以延长数据的生命周期。