Javascript 无法对循环和setInterval使用闭包

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);

我想在延迟10毫秒后打印0到9的值,而不形成任何其他命名函数

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();