解决var在setTimeout中的办法
解决作用域的问题 for (var i = 1; i <= 5; i++) { setTimeout(function timer() { console.log(i) }, i * 1000) } 立即执行 for (var i = 1; i <= 5; i++) { ;(function(j) { setTimeout(function timer() { console.log(j) }, j * 1000) })(i) } 使用setTimeout的第三个参数, 定时器启动时候,第三个以后的参数是作为第一个 func() 的参数传进去 for (var i = 1; i <= 5; i++) { setTimeout( function timer(j) { console.log(j) }, i * 1000, i ) } 第三种使用let for (let i = 1; i <= 5; i++) { setTimeout(function timer() { console.log(i) }, i * 1000) } 来源: https://www.cnblogs.com/lipu12281/p/12019129.html