//已解决,自己看的不仔细 [衰]
在javascript高级程序设计里有这么一个例子:
//为了实现result=[0,1,2 ....]
function createfunctions(){
var result = new Array();
for(var i=0;i<10;i++){
result[i]=function(num){
//这里不应该已经可以拿到和外部变量对象里断开连接的i?
return function(){
return num
}
}(i)
}
return result;
}
疑问:第一个匿名函数里已经把i作为参数传进去了,以参数的按值传递,num应该已经得到了一个i的副本,相当于断开了和次级的变量对象里的i的联系。这个时候不就可以直接return num 吗?为什么还要return一个匿名函数里再return num?
应该是这个原因,你可以运行试一下
还有这一段
虽然第二个会有预想的效果,但是第一种更加好