gpt4 book ai didi

javascript - 在 setTimeout 内调用函数

转载 作者:太空宇宙 更新时间:2023-11-04 02:56:42 25 4
gpt4 key购买 nike

定义函数并调用“回调”

var evenDoubler = function(number, callback) {
if (number % 2 == 0) {
setTimeout(function() {
callback(null, number * 2)
}, 100);
}
}

直接调用“callback”

var evenDoubler = function(number, callback) {
if (number % 2 == 0) {
setTimeout(callback(null, number * 2), 100);
}
}

这两种方法有什么区别?

最佳答案

当您“直接”调用callback()时,这会发生在计时器关闭之前;它发生在调用 setTimeout() 之前。

像这样的表达式

callback(null, number * 2)

是一个函数调用,因此当 JavaScript 需要它的值时它总是被求值。当它在函数调用中使用时:

setTimeout(callback(null, number * 2), 100);

然后对其进行求值,以获得需要传递给 setTimeout() 的值。这就像您使用简单的算术表达式调用某个函数一样:

someFunction(x + y);

您完全期望传递给函数的是 xy总和。函数调用只是另一种表达式,当它用作函数的参数时,它也会被完全求值。

关于javascript - 在 setTimeout 内调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42119276/

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