一、当执行下面代码时,输出的是6个6
let
原因:
setTimeout函数会等当前代码执行完后,再执行。
从该代码中,setTimeout会等for循环结束后执行,因为for循环结束后,i为6,且setTimeout被调用6次,所以最终输出6个6
二、将上面代码输出为0、1、2、3、4、5
JS用let就能将上面代码输出为0、1、2、3、4、5
for
原因是 let会单独创建一个作用域,setTimeout就会在等let创建的作用域里代码执行完后执行。其实等价于以下代码:
let
三、不用let怎样实现将上面代码输出为0、1、2、3、4、5
for
其实就是在setTimeout中把执行函数变成立即执行函数