Code Is Never Die !

闭包是指有权访问另一个函数作用域中的变量的函数。创建闭包的常见方式,就是在一个函数内部创建另一个函数。

function createFunction(){
var result = new Array();
for(var i=0; i<10; i++){
result[i] = function(){
return i;
}
}
console.log('i 的值:'+ i)
return result;
}

调用函数:

createFunction()

在这里插入图片描述

createFunction()[1/2/3/...]() //代表调用第一个或第二个或第三个,结果都一样

在这里插入图片描述
若希望得到预期结果,需要修改原函数:

function createFunction(){
var result = new Array();
for(var i=0; i<10; i++){
result[i] = (function(num){
return i;
})(i)
}
console.log('i 的值:'+ i)
return result;
}

改为立即执行函数,这样每次都会自动执行,所以result=[0,1,2,3,4,5,6,7,8,9]
在这里插入图片描述