Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 想知道一步一步的for循环过程,其中包括let和var_Javascript_Ecmascript 6_Var_Let - Fatal编程技术网

Javascript 想知道一步一步的for循环过程,其中包括let和var

Javascript 想知道一步一步的for循环过程,其中包括let和var,javascript,ecmascript-6,var,let,Javascript,Ecmascript 6,Var,Let,我有两个关于for循环的简单代码片段,分别涉及let和var。 使用let声明变量的第一个代码 for (let i = 0; i < 10; i++) { setTimeout(function() { console.log(i); }, 1000); } for(设i=0;i

我有两个关于for循环的简单代码片段,分别涉及let和var。 使用let声明变量的第一个代码

 for (let i = 0; i < 10; i++) {
       setTimeout(function() {
          console.log(i);
       }, 1000);
    }
for(设i=0;i<10;i++){
setTimeout(函数(){
控制台日志(i);
}, 1000);
}
所以它会像这样显示o/p

0123456789
 for (var i = 0; i < 10; i++) {
       setTimeout(function() {
          console.log(i);
       }, 1000);
    }
0123456789 但是如果我用这样的var替换let

0123456789
 for (var i = 0; i < 10; i++) {
       setTimeout(function() {
          console.log(i);
       }, 1000);
    }
for(变量i=0;i<10;i++){
setTimeout(函数(){
控制台日志(i);
}, 1000);
}
它将打印10次。 我知道这与功能级范围和块级范围有关,但我想清楚地了解一步一步执行的过程


提前感谢。

之所以只打印
9
,是因为回调函数是在循环完成后执行的。这意味着
i
是9

你可以:

如果您试图在1秒后打印1-10,可以在回调函数中循环。比如:

setTimeout(函数(){
对于(var i=0;i<10;i++){//将循环放入setTimeout db函数中。
控制台日志(i);
}
}, 1000);