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
//arr[k]=function(){document.write(k);}// 2
//arr[k] = (function (){function(){document.write(k)}}).(k);}arr[0];
arr[1];
arr[2];
qing bu yao wudao bieren .....
首先,你的代码有几处错误
第一,数组应该是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。
另外,不清楚你是否想问这些。问问题的话可以讲清楚一点自己想问什么~希望对你有帮助。