解决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)
}

 

posted @ 2019-12-10 20:54  lipu1993  阅读(482)  评论(0)    收藏  举报