setTimeout第一个参数是立即执行函数,看不懂了

setTimeout第一个参数是立即执行函数,看不懂了

for (var i = 0; i < 5; i++) {
  setTimeout((function(i) {
    console.log(i);
  })(i), i * 1000);
}

虽然结果是立即输出0,1,2,3,4,但是不知道为啥

阅读 4.2k
评论
    10 个回答
    • 569

    你先看括住整个function的那个括号
    也就是:

    (function (i) {
          console.log(i);
    })

    这一段,理解就是把自己包成一个包裹,是一个整体,这个整体是一个函数

    那么接下来怎么调用函数呢?是不是函数名()这样,在函数名后面加上括号,并且可以传递参数进去

    所以很自然的,就出现了这样:

    (function (i) {
        console.log(i);
    })(i)

    这种调用,就是写个函数,用()包起来,在后面接个(),里面写参数,就直接执行了

      相似问题
      推荐文章