分别输出数字 1~5,每秒一次,每次一个
for (var i=1; i<=5; i++) {
(function() {
var j = i;
setTimeout( function timer() {
console.log( j );
}, j*1000 );
})();
}
//上面两部分代码实现了同一功能
for (var i=1; i<=5; i++) {
(function(j) {
setTimeout( function timer() {
console.log( j );
}, j*1000 );
})( i );
}
题外话:块作用域下,更加简单的实现方法
for (var i=1; i<=5; i++) {
let j = i; // 是的,闭包的块作用域!
setTimeout( function timer() {
console.log( j );
}, j*1000 );
}
//或者更简单如下
for(let i=1; i<=5; i++) {
setTimeout( function timer() {
console.log(i);
},i*1000);
}