• 431

关于setTimeout()函数

for( var i = 1; i < 10; i++ ){
    setTimeout( function(){
        colsole.log(i);
    }, i * 1000);
}

我能理解为什么最后输出的全是10, 但是我不能理解为什么是1秒1次;求解答?

按我的理解,应该是第一次1秒,第二次2秒,,依次下去

阅读 2.5k
评论
    8 个回答
    • 110
    实现方法:
    var i = 0;
    var timer = setInterval(function () {
        console.log(i);
        if (i === 9) {
            clearInterval(timer);
        }
        i++;
    }, 1000)

    相关知识:

    setTimeout()和setInterval()函数都是设置一个定时器,并返回给定时器的ID。

    setTimeout(函数f, 1000);是在等待1秒后执行函数f,只执行一次,序列如下:

    1. 等待1秒
    2. 执行函数f

    setInterval(函数f, 1000);重复执行等待1秒 + 函数的指令,序列如下:

    while (true)
        1. 等待1秒
        2. 执行函数f
      相似问题
      推荐文章