匿名函数的写法之疑惑
moliu 2009-10-27 10:22:14 写法一:
function f() {
var a = [];
var i;
for(i = 0; i < 3; i++) {
a[i] = (function(i){
return function(){
alert(i);
return i;
}
})();
}
return a;
}
var a = f();
a[0]();//undefined
a[1]();//undefined
a[2]();//undefined
上面这种匿名函数的写法,正确吗?我觉得与下面的写法没有区别啊?
写法二 和 写法三 只差别在有无 ( ) 上,没括号的是正确写法吗?
写法二:
function f() {
var a = [];
var i;
for(i = 0; i < 3; i++) {
a[i] = (function(x){
return function(){
alert(x);
return x;
}
})(i);
}
return a;
}
var a = f();
a[0]();//0
a[1]();//1
a[2]();//2
写法三:
function f() {
var a = [];
var i;
for(i = 0; i < 3; i++) {
a[i] = function(x){
return function(){
alert(x);
return x;
}
}(i);
}
return a;
}
var a = f();
a[0]();//0
a[1]();//1
a[2]();//2