函数对象可以通过作用域链相互关联起来,函数体内部的变量都可以保存在函数作用域内,这种特性称为闭包。这意味着函数变量可以隐藏于作用域链之内,看起来好像是函数将变量包裹了起来。这种方式常用于共享函数内的私有变量。
闭包有如下应用特征:
1、局部变量:在函数中定义有共享意义(如:缓存、计数器等)的局部变量(注:定义成全局变量会对外造成污染);
2、内嵌函数:在函数中声明有内嵌函数,内嵌函数对函数中的局部变量进行访问;
3、外部使用:函数向外返回此内嵌函数,外部可以通过此内嵌函数持有并访问声明在函数中的局部变量,而此变量在外部是通过其他途径无法访问的。