📜  setTimeout(() => { console.log(i);}, 100); - Javascript(1)

📅  最后修改于: 2023-12-03 15:34:57.401000             🧑  作者: Mango

Javascript中的setTimeout函数

在Javascript中,setTimeout函数是一个非常常用的函数,它可以实现一定时间后执行一个函数。

语法

setTimeout语法如下:

setTimeout(function, milliseconds, arg1, arg2, ...)
  • function:必选,要执行的函数或要执行的代码字符串。
  • milliseconds:必选,延迟的时间,单位是毫秒。
  • arg1, arg2, ...:可选,要传递给函数的参数。
示例

以下是一个使用setTimeout函数的示例:

for (var i = 1; i <= 5; i++) {
  setTimeout(() => { console.log(i); }, 100);
}

在上面的代码中,我们使用了一个for循环,循环五次,每次调用setTimeout函数,延迟100毫秒输出i的值。但是,我们发现输出的结果并不是我们期望的1,2,3,4,5,而是5,5,5,5,5。这是为什么呢?

这是因为Javascript的事件循环机制,setTimeout函数是异步的,其会先把所有循环结束后的结果存起来,等待延时结束后再依次输出。因此,我们需要利用闭包使每次调用的时候能够输出对应的值。

修改后的代码如下:

for (var i = 1; i <= 5; i++) {
  (function(j) {
    setTimeout(() => { console.log(j); }, 100);
  })(i);
}

在上面的代码中,我们使用了一个匿名函数,并立即执行了它,将i的值传递进去,从而每次调用时能够输出对应的值。

结语

setTimeout函数是Javascript中一个非常有用的函数,但是在使用时需要注意其异步特性,避免不必要的错误。