关于闭包我也是初学者,所以对闭包的理解还不是很透彻,以下几个例子是我通过红宝书上的例子改变了一下,可能对大家学习闭包会有更透彻的帮助。
例1
//object2把闭包赋值给数组
//object2把闭包赋值给数组
var object2 = {
createFunctions : function (){
var result = new Array();
for(var i =0 ; i<10;i++){
result[i] = function(){
return i;
};
}
return result;
}
}
console.log(object2.createFunctions());
// 结果:
//Array (10)
// 0 function (){ return i; }
// 1 function (){ return i; }
// 2 function (){ return i; }
// 3 function (){ return i; }
// 4 function (){ return i; }
// 5 function (){ return i; }
// 6 function (){ return i; }
// 7 function (){ return i; }
// 8 function (){ return i; }
// 9 function (){ return i; }
console.log(object2.createFunctions()[1]());
//结果:
//10
例2
var object3 = {
createFunctions : function (){
var result = new Array();
for(var i =0 ; i<10;i++){
result[i] = function(num){
return num;
}(i);
}
return result;
}
}
console.log(object3.createFunctions());
//[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
例3
//object4定义一个匿名函数,并在匿名函数内部创建并返回了一个闭包
var object4 = {
createFunctions : function (){
var result = new Array();
for(var i =0 ; i<10;i++){
result[i] = function(num){
return function(){
return num;
}
}(i);
}
return result;
}
}
console.log(object4.createFunctions());
// Array (10)
// 0 function (){ return num; }
// 1 function (){ return num; }
// 2 function (){ return num; }
// 3 function (){ return num; }
// 4 function (){ return num; }
// 5 function (){ return num; }
// 6 function (){ return num; }
// 7 function (){ return num; }
// 8 function (){ return num; }
// 9 function (){ return num; }
console.log(object4.createFunctions()[2]());
// 结果:2