为什么 setTimeout 只在循环中打印一次?

zchfg2

从本文档中,我了解到setTimeout返回计时器的 ID 值。

但是当我运行这段代码时:

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

我在控制台选项卡中得到以下信息:

Javascript 控制台输出

即它打印了一次计时器 ID,然后是 5 个连续的 'hello' 实例。

输出不应该有 timerID, hello, timerID, hello, .... 吗?

为什么setTimeout即使它在循环中只打印一次它的ID?

查克

您所看到的是Javascript 控制台REPL(读取-评估-打印循环)特性。

您希望看到setTimeout()循环每次迭代的所有调用的结果但是,在完成一组语句后,JS控制台只打印出最近执行的语句的返回值。

此行为的简单显示:

注意:在这些示例中,我描述的是 JS 控制台输入/输出,而不是包括可执行代码块,因为所讨论的行为特定于以交互方式使用控制台。

>  x = 4;
<- 4

>  y = 5;
<- 5

>  x; y;
<- 5

最后一条命令有两条语句,只打印最后一条的值。

如果你想打印出每个setTimeout()调用的 id ,你只需要明确地执行日志记录操作:

>  for (var i = 1; i <= 5; i++) {
     console.log(setTimeout(function() { console.log('hello'); }, 100));
   }
596
597
598
599
600
<- undefined
5  hello

上面你看到:

  • 立即执行的console.log(setTimeout(...))语句的 5 个输出
  • undefined最后一条console.log(setTimeout(...))语句返回值
  • 5 个延迟console.log('hello')语句的分组输出

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么setTimeout()第一次只运行一次我的代码?

来自分类Dev

Promise 中的 setTimeout - 如何解决以及为什么它只运行一次?

来自分类Dev

为什么我的循环不起作用?只上到第一次打印

来自分类Dev

为什么for循环只循环一次?

来自分类Dev

为什么这个bash for循环只迭代一次?

来自分类Dev

为什么我的循环只运行一次?

来自分类Dev

为什么循环只执行一次?

来自分类Dev

为什么我的循环只运行一次?

来自分类Dev

为什么我的 for 循环似乎只运行一次?

来自分类Dev

为什么我的 For Each 循环只迭代一次?

来自分类Dev

为什么循环中的功能只能运行一次?

来自分类Dev

为什么某些if语句仅在一次循环中触发一次?

来自分类Dev

为什么我的循环在迭代之间不等待?setTimeout()

来自分类Dev

为什么在for循环的setTimeout中放置警报会中断警报?

来自分类Dev

为什么setTimeout无法与.hover()一起使用?

来自分类Dev

为什么在外循环中 isstringstream 迭代器只迭代一次,而从文件中读取,尽管该文件中存在其他行?

来自分类Dev

为什么setTimeout内for循环中的IIFE在nodejs中的行为与浏览器的行为不同

来自分类Dev

为什么jupyter笔记本只打印一次cython结果?

来自分类Dev

试图了解为什么只在第一次调用嵌套的for循环

来自分类Dev

为什么生成器只通过for循环前进一次?

来自分类Dev

(OpenCV) 为什么我的 while 循环在重新缩放图像时只运行一次?

来自分类Dev

setTimeout 仅在我在 for 循环中使用它时运行一次

来自分类Dev

为什么setTimeout立即执行?

来自分类Dev

为什么setTimeout立即触发?

来自分类Dev

为什么在C / C ++的while循环中仅取消引用一次?

来自分类Dev

为什么一次迭代为真后,for循环中的if条件停止验证?

来自分类Dev

为什么我的while循环中的“ if”条件仅被检查了一次?

来自分类Dev

为什么我的$ watch只发射一次?

来自分类Dev

为什么angularJs $ watch只运行一次

Related 相关文章

  1. 1

    为什么setTimeout()第一次只运行一次我的代码?

  2. 2

    Promise 中的 setTimeout - 如何解决以及为什么它只运行一次?

  3. 3

    为什么我的循环不起作用?只上到第一次打印

  4. 4

    为什么for循环只循环一次?

  5. 5

    为什么这个bash for循环只迭代一次?

  6. 6

    为什么我的循环只运行一次?

  7. 7

    为什么循环只执行一次?

  8. 8

    为什么我的循环只运行一次?

  9. 9

    为什么我的 for 循环似乎只运行一次?

  10. 10

    为什么我的 For Each 循环只迭代一次?

  11. 11

    为什么循环中的功能只能运行一次?

  12. 12

    为什么某些if语句仅在一次循环中触发一次?

  13. 13

    为什么我的循环在迭代之间不等待?setTimeout()

  14. 14

    为什么在for循环的setTimeout中放置警报会中断警报?

  15. 15

    为什么setTimeout无法与.hover()一起使用?

  16. 16

    为什么在外循环中 isstringstream 迭代器只迭代一次,而从文件中读取,尽管该文件中存在其他行?

  17. 17

    为什么setTimeout内for循环中的IIFE在nodejs中的行为与浏览器的行为不同

  18. 18

    为什么jupyter笔记本只打印一次cython结果?

  19. 19

    试图了解为什么只在第一次调用嵌套的for循环

  20. 20

    为什么生成器只通过for循环前进一次?

  21. 21

    (OpenCV) 为什么我的 while 循环在重新缩放图像时只运行一次?

  22. 22

    setTimeout 仅在我在 for 循环中使用它时运行一次

  23. 23

    为什么setTimeout立即执行?

  24. 24

    为什么setTimeout立即触发?

  25. 25

    为什么在C / C ++的while循环中仅取消引用一次?

  26. 26

    为什么一次迭代为真后,for循环中的if条件停止验证?

  27. 27

    为什么我的while循环中的“ if”条件仅被检查了一次?

  28. 28

    为什么我的$ watch只发射一次?

  29. 29

    为什么angularJs $ watch只运行一次

热门标签

归档