This question already has answers here:
What's the difference between using “let” and “var”?
(33个答案)
上个月关闭。
我期望两个循环的输出相同
let和var是否可以更改任何函数的闭包属性,特别是在这种情况下?
(33个答案)
上个月关闭。
我期望两个循环的输出相同
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