我有以下代碼:函數名預計關閉
for(var i = 0; i <=3; i++){
setTimeout(function(){
var j = i;
function(){
console.log(j);
}
}, 1000);
}
我收到的第二功能的錯誤「預期函數名稱」。我不明白爲什麼我不能在這裏使用匿名函數。
我有以下代碼:函數名預計關閉
for(var i = 0; i <=3; i++){
setTimeout(function(){
var j = i;
function(){
console.log(j);
}
}, 1000);
}
我收到的第二功能的錯誤「預期函數名稱」。我不明白爲什麼我不能在這裏使用匿名函數。
要創建一個封閉,並調用它馬上做到這一點:
(function(){
console.log(j);
}());
不過,實際上正確捕捉i
的內部函數,你可以移動的功能了一下,把它傳遞i
:
for (var i = 0; i <= 3; i++) {
(function(i){
setTimeout(function(){
console.log(i);
}, 1000);}(i));
}
而且,實際打印的數字後,對方1秒,你可以這樣做:
for (var i = 0; i <= 3; i++) {
(function(i){
setTimeout(function(){
console.log(i);
}, 1000*(i+1));}(i));
}
基於Jordão酒店的答案,我結束了使用下面的代碼:
for(var i = 0; i <=3; i++){
(function(){
var j = i;
setTimeout(function(){
console.log(j);
}, 1000);
}());
}
所以,你知道的未來,你可以得到你的輸出,如果你使用的代碼行的小(清潔?)號遞歸:
function loop(i) {
console.log(i = i || 0);
if (i <= 3) setTimeout(loop, 1000, ++i);
}
loop();
OP,你期待的工作代碼後,其他登錄0-31秒? – Andy