时间 | 输出 |
---|---|
第0秒 | 3 |
第1秒 | 3 |
第2秒 | 3 |
原因:js是单线程(因为他是面向web的语言,比如防止用户同时触发删除和添加,如果是多线程会导致出现bug),setTimeout中的()=>{}会被加入任务队列,js会先执行执行栈里的内容(对于上面的函数来说就是三次循环完成setTimeout),再执行任务队列(setTimeout中的函数)。
将var改为let,则输出结果为0 1 2秒分别输出0 1 2
for(let i=0;i<3;i++){
setTimeout(
()