Javascript 闭包时需要函数名
我有以下代码:Javascript 闭包时需要函数名,javascript,Javascript,我有以下代码: for(var i = 0; i <=3; i++){ setTimeout(function(){ var j = i; function(){ console.log(j); } }, 1000); } for(var i = 0; i <=3; i++){ (function(){ var j = i; setTimeout(fun
for(var i = 0; i <=3; i++){
setTimeout(function(){
var j = i;
function(){
console.log(j);
}
}, 1000);
}
for(var i = 0; i <=3; i++){
(function(){
var j = i;
setTimeout(function(){
console.log(j);
}, 1000);
}());
}
for(var i=0;i要创建一个闭包并立即调用它,请执行以下操作:
(function(){
console.log(j);
}());
但是,要真正为内部函数正确捕获i
,可以将函数向上移动一点并传递它i
:
for (var i = 0; i <= 3; i++) {
(function(i){
setTimeout(function(){
console.log(i);
}, 1000);}(i));
}
for(var i=0;i要创建一个闭包并立即调用它,请执行以下操作:
(function(){
console.log(j);
}());
但是,要真正为内部函数正确捕获i
,可以将函数向上移动一点并传递它i
:
for (var i = 0; i <= 3; i++) {
(function(i){
setTimeout(function(){
console.log(i);
}, 1000);}(i));
}
for(var i=0;i根据Jordão的回答,我最终使用了以下代码:
for(var i = 0; i <=3; i++){
setTimeout(function(){
var j = i;
function(){
console.log(j);
}
}, 1000);
}
for(var i = 0; i <=3; i++){
(function(){
var j = i;
setTimeout(function(){
console.log(j);
}, 1000);
}());
}
for(var i=0;i根据Jordão的回答,我最终使用了以下代码:
for(var i = 0; i <=3; i++){
setTimeout(function(){
var j = i;
function(){
console.log(j);
}
}, 1000);
}
for(var i = 0; i <=3; i++){
(function(){
var j = i;
setTimeout(function(){
console.log(j);
}, 1000);
}());
}
for(var i=0;i,因此您知道,如果使用递归,将来可以使用更少(更干净?)的代码行获得输出:
function loop(i) {
console.log(i = i || 0);
if (i <= 3) setTimeout(loop, 1000, ++i);
}
loop();
函数循环(i){
console.log(i=i | | 0);
如果(i因此您知道,在将来,如果使用递归,您可以使用更少(更干净?)的代码行获得输出:
function loop(i) {
console.log(i = i || 0);
if (i <= 3) setTimeout(loop, 1000, ++i);
}
loop();
函数循环(i){
console.log(i=i | | 0);
如果(当这解决了眼前的问题时,OP将获得4
作为每个超时的输出。我知道这不是问题所在,但你也可以尝试本垒打:)这帮了大忙。谢谢。虽然这解决了眼前的问题,但OP会在每次超时时得到4
作为输出。我知道这不是问题所在,但你最好尝试本垒打:)这帮了大忙。谢谢。OP,您是否希望工作代码一秒接一秒地记录0-3?OP,您是否希望工作代码一秒接一秒地记录0-3?