for (let i=1; i<=5; i++) {
setTimeout( function timer(){
console.log( i );
}, i*1000 );
}
以上代码在此代码段中有效,但在控制台窗口 中运行时,我得到了意想不到的结果。第一个值是垃圾。打印第一个垃圾值背后的原因是什么?
最佳答案
在 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/