js使用过程中,当使用for循环时
for(var i=0; i<10; i++) {
console.log(i)
}
得到结果
当在for里面执行异步操作时,如setTimeout函数
for(var i=0; i<10; i++) {
setTimeout(() => {
console.log(i)
}, 300)
}
得到结果是输出10个10
因为输出的时候,它已经执行完for函数,所以所有的i都是10,这个时候就要运用js的闭包来解决这个问题
方法1:用let代替var
for(let i=0; i<10; i++) {
setTimeout(() => {
console.log(i)
}, 300)
}