This question already has answers here:
What's the difference between using “let” and “var”?
                                
                                    (33个答案)
                                
                        
                                上个月关闭。
            
                    
javascript - 为什么两个循环的输出都不同?-LMLPHP

我期望两个循环的输出相同

var arr = [5,6,7,8]
// first loop
for(var i=0;i<arr.length;i++) {
  setTimeout(()=>{console.log(i,arr[i])},500)
}
// second loop
for(let i=0;i<arr.length;i++) {
  setTimeout(()=>{console.log(i,arr[i])},500)
}


let和var是否可以更改任何函数的闭包属性,特别是在这种情况下?

最佳答案

这是由于词汇范围。

let将保留变量值,但是var甚至在执行第一个setTimeout回调之前都会更新该值。

关于javascript - 为什么两个循环的输出都不同? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58753566/

10-11 12:06