环境 注意环境是ie8,常用的现代浏览器的语法是没有的,比如:let,const(es6开始支持)。只能使用 varpromise,async/await。转而使用function callbackvar存在的问题 js// 正常写法 for (var i = 0; i < 3; i++) { setTimeout(() => console.log("var i =", i), 0); }但是循环内定义的函数不是马上执行的,当这个函数被调用时,i 已经等于 imgList.length 了。 使用 let 就不会出现这个问题。 根本原因是作用域的问题,var会自动提到全局变量,可以尝试在for循环结束后打印ijsfor (var i = 0; i < 3; i++) { setTimeout(() => console.log("var i =", i), 0); } console.log(i);目前是使用IIFE,创建新的函数作用域,冻结变量。js// IIFE写法 for (var i = 0; i < 3; i++) { (function(…