javascript - 在控制台窗口中运行时,for 循环中的 setTimeout 第一次打印出意外的垃圾值

标签 javascript

for (let i=1; i<=5; i++) {
      setTimeout( function timer(){
        console.log( i );
      }, i*1000 );
    }

以上代码在此代码段中有效,但在控制台窗口 中运行时,我得到了意想不到的结果。第一个值是垃圾。打印第一个垃圾值背后的原因是什么?

enter image description here

最佳答案

console 中打印的值是 setTimeout([timeoutID]) 的返回值

当您在 console 中执行代码时,第一个值始终是 return expression 的值

在您的例子中,for 循环被迭代 5 次,返回值总是递增 5 因此值将为 5..10..15 等等。返回 setTimeout 的最新值。

DevTools Console 中执行代码时,肯定会观察到 undefined 被打印出来,这是因为执行了 void-function,如果 expression 返回一个值,它被打印出来。

关于javascript - 在控制台窗口中运行时,for 循环中的 setTimeout 第一次打印出意外的垃圾值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39367292/

相关文章:

javascript - 如何交换json

javascript - native 事件对象的自定义方法。

javascript - 如何使用 codeigniter(由 javascript 代码捕获的图像)将捕获的图像保存在文件夹中?

javascript - 如何下载文本文件并将其存储为 jQuery 中的字符串

javascript - 如何使用变量更改 jquery 数据表语言

javascript - 在javascript中捕获ctrl+z组合键

javascript - JavaScript 中的日期解析和验证

javascript - 用于在 gmail 中插入数学的 Greasemonkey 脚本

javascript - 有谁知道 `[1,,2]` 只有两个 key 的一致性如何?

javascript - 如何撤销针对 Google Api 的身份验证 token 客户端