var arr = new array;for(var k=0 ; k<3 ; k++)
{
// 1
//arr[k]=function(){document.write(k);}// 2
//arr[k] = (function (){function(){document.write(k)}}).(k);}arr[0];
arr[1];
arr[2];

解决方案 »

  1.   


     qing bu yao wudao bieren .....
      

  2.   


    首先,你的代码有几处错误
    第一,数组应该是Array,而不是array。不是var arr = new array 而是 var arr = new Array();
    第二,arr[k]=function(){document.write(k);}这句的意思是想将这个函数赋给对应的arr数组,而你下面的
    arr[0];
    arr[1];
    arr[2];
    并不是你想象中的调用该函数。它们只代表了这个函数的定义,如果你想调用它们,需要
    arr[0]();
    arr[1]();
    arr[2]();
    这样调用。
    第三,这样调用并不能得到你想要的结果,因为它只会返回333。这是作用域的问题,如果你想得到最终结果请像下面一样调用var arr = new Array();
        for (var k = 0; k < 3; k++) {
            (function (k) {
                var temp = k;
                // 1
                arr[temp] = function () { document.write(temp); };
            })(k);
        }    arr[0]();
        arr[1]();
        arr[2]();
    第四,arr[k] = (function (){function(){document.write(k)}}).(k); 这句明显有错。我猜你的意思是想这样: arr[k] = (function(){document.write(k)})(k); 这是立即执行function里面的代码。而他不会返回任何值,所以实际上你给不给arr[k]赋值是一样的。它们最后是undefined。
    另外,不清楚你是否想问这些。问问题的话可以讲清楚一点自己想问什么~希望对你有帮助。
      

  3.   

    thanks  b48121905  no explain about describe the question is useful