标签:
7.2 闭包
定义: 闭包是指有权访问另一个函数作用域中的变量的函数.
理解闭包:
闭包的副作用:
function createFunctions(){
var result = new Array();
for(var i=0; i<10; i++){
result[i] = function(){
return i;
};
}
return result;
}
以上这个函数会返回一个函数数组,但是其每个函数都会返回10. 因为每个函数的作用域链中都保存着createFunctions()函数的活动对象,所以它们引用的都是同一个变量i
function createFunctions(){
var result = new Array();
for( var i=0; i<10; i++){
result[i] = function(num){
return function(){
return num;
};
}(i);
}
return result;
}
创建另一个匿名函数强制让闭包的行为符合预期.
这样一来, result数组中的每个函数都有自己num变量的一个副本, 因此就可以返回各自不同的数值了.
标签:
原文地址:http://www.cnblogs.com/haoyijing/p/5790433.html