1. 递归方法
function printNum(num, delay, callback) {
setTimeout(() => {
for (i = 0; i < num; i++) {
console.log(i + 1);
}
callback()
}, delay)
}
const a = () => { printNum(4, 3000, a) }
a()
2. 闭包实现
for (var i = 0; i < 4; i++) {
(function (i) {
setTimeout(function () {
console.log(i + 1);
}, i * 1000);
})(i);
}
3. 块级作用域
// 使用 let 块级作用域
for (let i = 0; i < 5; i++) {
setTimeout(function() {
console.log(i);
}, i * 1000);
}