Javascript 无法对循环和setInterval使用闭包
我想在延迟10毫秒后打印0到9的值,而不形成任何其他命名函数Javascript 无法对循环和setInterval使用闭包,javascript,closures,Javascript,Closures,我想在延迟10毫秒后打印0到9的值,而不形成任何其他命名函数 function ClosurePrint(){ for(i=0;i<10;i++){ setTimeout(function(){ document.writeln(function(y){ return y; })(i);
function ClosurePrint(){
for(i=0;i<10;i++){
setTimeout(function(){
document.writeln(function(y){
return y;
})(i);
},10);
}
}
ClosurePrint();
您正在将函数
引用
传递给document.write,这将导致打印它的原语
值。您可以使用setTimeout
的第三个参数将其用作传递函数的参数
这里不需要通过每次迭代创建一个范围来处理闭包问题
function ClosurePrint(){
for(i=1;i<=10;i++){
setTimeout(function(i){
document.writeln(i)
},1000 * i, i);
}
}
ClosurePrint();
您正在将函数
引用
传递给document.write,这将导致打印它的原语
值。您可以使用setTimeout
的第三个参数将其用作传递函数的参数
这里不需要通过每次迭代创建一个范围来处理闭包问题
function ClosurePrint(){
for(i=1;i<=10;i++){
setTimeout(function(i){
document.writeln(i)
},1000 * i, i);
}
}
ClosurePrint();
任务是使用闭包实现上述问题。如果你能这样告诉我,那就太好了。不过谢谢你的帮助。任务是使用闭包实现上述问题。如果你能这样告诉我,那就太好了。谢谢你的帮助。
function ClosurePrint(){
for(i=1;i<=10;i++){
(function(i){
setTimeout(function(){
document.writeln(i);
},1000 * i);
})(i);
}
}
ClosurePrint();