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);}
