for (var i = 1; i <= 5; i++) { setTimeout(function timeer() { console.log(i);//5个6 }, 1000) }
先执行同步,同步执行完了之后,指向异步;
这个循环的终止条件是i=6;此时执行异步。
for (let i = 1; i <= 5; i++) { setTimeout(function timeer() { console.log(i); //1 2 3 4 5 }, 1000) } //同样执行同步,同步执行完后是异步,因为let 具有块级作用域。
它在循环的时候,单独产生一个作用域。所以是 1 2 3 4 5