function xxx(){
ss=[]
for(var i=0;i<6;i++) {
var ii= i;
var s = function () {
alert(ii)
}
ss[i] = s;
}
ss1;
}
:lol:
在执行函数的时候使用的是最后一个声明变量ii,之前声明的ii变量都会被覆盖
这个循环里面的ii最后已经变成5了,
function xxx(){
ss=[]
for(var i=0;i<6;i++) {
var ii = i;
ss[i] = "s("+ii+")";
}
eval(ss[1]);
}
var s = function (ii) {
alert(ii)
}
这样才是1
主要是内部函数对ii进行了引用
function xxx(){
ss=[]
for(var i=0;i<6;i++) {
var ii = i;
var s = function (y) {
return function(){
alert(y);
}
}(ii);
ss[i] = s;
}
ss1;
}
以上代码主要是执行函数吧ii作为参数传递。返回一个匿名函数以用参数y,这样返回的才是1