只是在尝试JS。我发现了一些我无法理解的东西。
我有这样的代码:
prompt('title', setTimeout(() => {
return 'yes'
}, 1000));
当我第一次运行它时,它打印2。但是当我再次运行它时,它打印3。
但是这个计数器是什么,为什么它从2开始?价值观从何而来?为什么不返回yes?
当您调用setTimeout
时,超时被给定一个timeoutID(稍后可以使用clearTimeout
取消它)。每当产生新的超时时,这个timeoutID就会增加。当设置为prompt
的默认值时,会将其字符串化(导致返回timeoutID)。
该值从2开始,因为您可能在运行prompt
之前设置了超时。
示范:
const first = setTimeout(() => {}, 1).toString()
const second = setTimeout(() => {}, 1).toString()
console.log(first, second)