SOURCE

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 命令行工具 X clear

                    
>
console