for (var i = 0; i < 10; i++) {
setTimeout(function () {
console.log('var', i)
}, 1000)
}
for (let i = 0; i < 10; i++) {
setTimeout(function () {
console.log('let', i)
}, 1000)
}
for (var i = 0; i < 10; i++) {
(function (i) {
setTimeout(function () {
console.log('IIFE', i)
}, 1000)
})(i)
}
for (var i = 0; i < 10; i++) {
setTimeout(function (i) {
console.log('third params', i)
}, 1000, i)
}
for (var i = 0; i < 10; i++) {
setTimeout(function (i) {
console.log('bind', i)
}.bind(this, i), 1000)
}
console