尝试使用闭包和let在for循环中打印一系列数字:
请考虑以下示例:
for(var i=1; i<10; i++){
setTimeout(function(){
document.write(i);
}, 1000);
}
输出为:
101010101010101010
使用闭包:
for(var i=1; i<10; i++){
(function(x){
setTimeout(function(){
document.write(x);
}, 1000);
})(i);
}
输出为:
123456789
不使用闭包,仅使用ES6 let:
for(let i=1; i<10; i++){
setTimeout(function(){
document.write(i);
}, 1000);
}
输出为:
123456789
尝试理解在转向ES6时是否仍需要使用IIFE块来使用闭包?
如果我们确实需要在ES6中使用闭包,是否有任何好的示例?
let
时不需要 IIFE 吗? - Oriol