1.经典的闭包
for(var i=0; i<10; i++) { setTimeout(function () { console.log(i); }, 0); };
解析:输出10个10。
修改使结果为0123456789:
for(var i=0;i<10; i++) { setTimeout( function (j) { return function () { console.log(j); } }(i), 0 ); };
或者
for(var i=0; i<10; i++) { !function (j) { setTimeout(function() {console.log(j);}, 0); }(i); };
或者es6
for(let i=0; i<10; i++) { setTimeout( function() {console.log(i);}, 0); }