javascript - 是什么原因导致setTimeout中code和fnc的差异

标签 javascript settimeout

根据MDN

var timeoutID = window.setTimeout(func, [delay, param1, param2, ...]);
var timeoutID = window.setTimeout(code, [delay]);

如您所见:

 setTimeout(function() {
            alert(2);
        }, 0);
        alert(1);

结果首先是“1”,然后是“2”。

   setTimeout(alert(2), 0);
   alert(1);

但是,结果首先是“2”,然后是“1”。

是什么导致了差异?

最佳答案

如果是

setTimeout(alert(2), 0);
alert(1);

第一个 alert(2) 被执行,其返回值(即 undefined)被传递给 setTimeout 函数,而在第一个示例中一个函数被传递给 setTimeout 函数。

另请查看:Why is setTimeout(fn, 0) sometimes useful?

关于javascript - 是什么原因导致setTimeout中code和fnc的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38683628/

相关文章:

JavaScript setTimeOut 函数不起作用

Javascript:使用 setTimeout 重试的函数

javascript - setTimeout() 是否在单独的线程上运行?

javascript - underscore _.each 和 forEach 有什么区别?

javascript - Bootstrap js崩溃不隐藏

javascript - 通过 AJAX 将对象传递给 PHP

javascript - 多个 $.each 中的 setTimeout() 回调

javascript - Firefox onLocationChange 并不总是被调用

javascript - 使用 Ajax 发送时等待响应加载

javascript - 如何使用变量在 Chrome 中执行 XSLT 转换