for(var i = 1; i < 5; i ++) {
setTimeout(function() {
console.log(i);
}, i* 1000);
}
// Solution 1: ES6
for(let i = 1; i < 5; i ++) {
setTimeout(function() {
console.log(i);
}, i* 1000);
}
// Solution 2: IIFE
for(let i = 1; i < 5; i ++) {
(function(j){
setTimeout(function() {
console.log(j);
}, j * 1000);
})(i)
}
// Solution 3: The 3rd param of setTimeout
for(let i = 1; i < 5; i ++) {
setTimeout(function(j) {
console.log(j);
}, i * 1000, i);
}
// function myCount() {
// let index = 0;
// function fn() {
// return index += 1;
// }
// fn.clear = function() {
// index = 0;
// }
// return fn;
// }
// let count = myCount();
// a = count();
// // a === 1
// b = count();
// // b === 2
// c = count();
// // c === 3
// count.clear();
// d = count();
// // d === 1
// console.log(a,b,c,d); // 1,2,3,1
console