gpt4 book ai didi

JavaScript setInterval 函数可能有参数,也可能没有参数

转载 作者:行者123 更新时间:2023-12-03 06:50:58 25 4
gpt4 key购买 nike

我正在研究一个简单的高阶函数,delay ,这将调用函数参数 func ,然后延迟传入的时间量 wait 。我已经阅读了有关在哪里输入参数的其他答案,但我找到的答案都没有准确解决我需要学习的内容:我应该在哪里以及如何允许可能会或可能不会传递给 func 的参数。 ?

原始说明:“在等待毫秒后调用 func。调用 func 时会向 func 提供任何其他参数。”

这是基本的开始:

function delay(func, wait) {
setInterval(func, wait);
}

关于 SO 的另一个答案指出,可以使用匿名函数来包装 func参数,以便可以将参数传递到那里,但我还没有成功构建它。

非常感谢指导。

最佳答案

听起来您需要使用arguments伪数组和Function#apply:

function delay(func, wait) {
// get all arguments after the first two
var args = Array.prototype.slice.call(arguments, 2);

setTimeout(function() {
func.apply(null, args);
}, wait);
}

示例:

function delay(func, wait) {
var args = Array.prototype.slice.call(arguments, 2);

setTimeout(function() {
func.apply(null, args);
}, wait);
}

function outputPerson(firstName, lastName) {
console.log("Hello, " + firstName + " " + lastName);
}

delay(outputPerson, 3000, "John", "Doe");

编辑:正如帕特里克·埃文斯和我在评论中指出的那样,setTimeout 已经提供了此处描述的功能(只要您不使用 IE <10)。因此,您甚至可以像这样定义您的 delay 函数:

var delay = setTimeout;

关于JavaScript setInterval 函数可能有参数,也可能没有参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37501894/

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