日期:2014-05-16 浏览次数:20464 次
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是一个函数数组 } var funcs = createFunctions(); // 得到一个函数数组funcs for(var i = 0; i < funcs.length; i++){ document.write(funcs[i]()+"<br/>"); }
function createFunctions(){ var result = new Array(); for(var i = 0; i < 10; i++){ result[i] = function(num) {//这里的num就是后面(i)中的值,下面三行就是这个闭包函数的返回值;看这代码就是创建了一个数组,result[0]=0;result[1]=1。。。。 return function() { return num; }; }(i); //这里是什么意思?:闭包函数的用法,这里的i就是for中的i,将其传递给result[i]=function(num)的这个num } return result; // result是一个函数数组 }
------解决方案--------------------
不闭包也可以,如(function(num) {
...
})(i);
------解决方案--------------------
function(num) {
return function() {
return num;
};
}
i是上面循环中的i这是个匿名函数后面加(i)是直接调用这个函数,把i传入进函数里num=i这时候