⾸先因为 setTimeout 是个异步函数,所有会先把循环全部执⾏完毕,这时候 i 就是 5了,所以会输出6个 5。
解决办法两种,第一种使用闭包 :
第⼆种就是使用 setTimeout 的第三个参数:
第三种就是使用 let 定义 i 了:
因为对于 let 来说,他会创建⼀个块级作⽤域,相当于下面这样:
⾸先因为 setTimeout 是个异步函数,所有会先把循环全部执⾏完毕,这时候 i 就是 5了,所以会输出6个 5。
因为对于 let 来说,他会创建⼀个块级作⽤域,相当于下面这样: