webapi如何执行settimeout javascript

问题描述 投票:-1回答:1

我对settimeout完成后的混乱感到困惑,是否将函数名称/函数定义(作为参数传递给settimeout的函数)或调用的函数放在函数名/函数中

function cb(){
  console.log("Hi!")
}
setTimeout(cb,2000) // what will be put on the callback queue after 2 sec cb or cb()

所以现在,如果我在此之后呼叫setTimeout(cb,2000),它将仅在cb or cb()中放入回叫队列中>

并且如果我假设它只是像这样放置cb,并且当eventloop将cb放入调用堆栈中时,它将执行cb函数因此,如果是这样,那么如果我有:

function cb(num){
      console.log(num);
      console.log("Hi!")
    }

并调用setTimeout(cb,2000,5),因此对于这种情况,在计时器完成后,并且如果仅将cb放入回调队列中,则当事件循环将cb放入调用堆栈时,它如何记住或传递num参数(在这种情况下为5),因为它会将5记录到控制台。

非常感谢您的协助,因为我无法为这种困惑设定心理模型。

我对settimeout完成后的混乱感到困惑,是否将函数名称/函数定义(我们将其作为参数传递给settimeout)或...

javascript event-loop webapi
1个回答
0
投票
当您执行setTimeout(cb,2000,5)时。您正在将3个参数推入基础实现的堆栈:
© www.soinside.com 2019 - 2024. All rights reserved.