闭包就是能够读取其他函数内部变量的函数。例如在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。
闭包的形成与变量的作用域以及变量的生存周期密切相关。
- 外部可以访问内部变量。
- 内部变量的生命周期延长。
例:
var closure = function(){
var count = 0;
return function(){
count ++;
}
}
closure(); // 1
closure(); // 2
例2:
function demo(){
var result = [];
for(var i = 0;i < 10;i++){
result[i] = (function(num){
return function(){
console.info(num);
}
})(i);
}
return result;
}
var demoObj = demo();
for(var i = 0;i < 10;i++){
demoObj[i]();
}