首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

javascript高级程序设计中的一个函数有关问题

2012-09-18 
javascript高级程序设计中的一个函数问题JScript codefunction createFunctions(){var result new Array

javascript高级程序设计中的一个函数问题

JScript code
    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/>");    }


问题如注释,那里多出来一个(i)是什么意思啊,不懂

[解决办法]
闭包的用法

JScript code
    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这时候

热点排行