闭包是可访问上一层函数作用域里变量的函数,即便上一层函数已经关闭。
创建闭包的最常见的方式:在一个函数内部创建另一个函数,通过另一个函数访问这个函数内部的变量并做处理,将函数内部的变量和方法传递(return)到外部。
var add = (function () {
var counter = 0;
return function () {
return counter += 1;
}
})();
add(); // 1
add(); // 2
add(); //3
闭包的特性:
当前作用域总是能够访问外部作用域中的变量
函数内再嵌套函数
变量(私有变量)不会被垃圾回收机制回收