作用域 和 setTimeout 问题1:描述:结果:原因:方案: 问题1: 描述: 该循环中的输出结果为? for (var i = 0; i < 3; i++) { setTimeout(function() { console.log(i) }) } console.log(i) 结果: 3 3 3 3 原因: 可以百度搜到 setTimeout是异步的,往任务队列里面添加一个任务, 只有主线上的全部执行完,才会执行任务队列里的任务;同时 i 是 全局的所以等 function执行的时候,取到的i 为 3 方案: 使用闭包,或者 let 参考文章