先看下面代码: for (var i = 0; i < 3; i++) { setTimeout(function () { console.log(i) }, 1000); } 运行效果是 输出了三次3,而要想输出1,2,3,可改进代码为: for (var i=0;i<3;i++){ (function (i) { setTimeout(function () { console.log(i); },1000); })(i); } 效果: 简要说一下鄙人拙见: 第一个代码出现三次,3,的原…