gpt4 book ai didi

javascript - setTimeout(..0) 排序

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:57:26 24 4
gpt4 key购买 nike

在学习JS的过程中,下面的代码对我来说很神秘。

下面的代码永远不会打印出'this is fn'?

我不确定 fn=null; 总是在回调函数之前先被调用setTimtout(..,0)

function fn(){
console.log('this is fn');
}

var intv = setTimeout( function(){
intv = null;
if (fn) fn();
}, 0 );

fn = null;

最佳答案

因为这就是它的工作方式。 setTimeout 的回调函数将被压入队列,直到堆栈变空。

赋值后堆栈将变空 fn = null;

现在事件循环会将回调推送到堆栈,因为它是空的,因此它将执行并且因为 fn 不再是函数而是 null 所以不会执行任何 console .log.

关于javascript - setTimeout(..0) 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51784634/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com