function createFunctions() {
    var result = new Array();    for (var i=0; i<10; i++) {
        result[i] = function(num) {
             return function() {
                 return num;
             }
        }(i);
    }
    return result;
}var funcs = createFunctions();for(var i=0; i<funcs.length; i++)
   document.write(funcs[i]() + "<br />");为什么书上说“由于函数参数是按值传递的,所以就会将变量i的当前值复制给参数num”?

解决方案 »

  1.   


    但是这个函数哪里有提示num是i的形参?
      

  2.   


           result[i] = function(num) {
                 return function() {
                     return num;
                 }
            }(i); //这里的i传递给外层函数function(num)立即执行,返回内层函数
      

  3.   

    function(num) {
                 return function() {
                     return num;
                 }
            }(i);
    function(num) {
                     return num;
            }(i);
    所以是0-9