gpt4 book ai didi

javascript - 使用 setTimeout 的闭包示例无法识别函数调用

转载 作者:行者123 更新时间:2023-12-01 00:12:30 25 4
gpt4 key购买 nike

我正在尝试创建一个小型应用程序,该应用程序关闭延迟函数并使用回调和等待时间定义一个新函数。然后,我想使用这个新创建的内部 setTimeout 函数来获取一个参数,该参数将在等待时间后在回调上运行。

function addTwo(num) {
return num + 2
}

const delay = (callback, wait) => {
return setTimeout((value) => callback(value), wait)
}
var delayAddByTwo = delay(addTwo, 100)
console.log(delayAddByTwo(6))
// expected result 8
// actual result --- Uncaught TypeError: delayAddByTwo is not a function

据我所知,在 delayAddByTwo = delay(addTwo, 100) 之后,剩下要创建的唯一参数是传递给“内部”内部回调的 setTimeOut 函数。在这个例子中我错过了关于闭包的什么?

最佳答案

您需要将 vardelayAddByTwo=delay(addTwo, 100) 替换为 vardelayAddByTwo = (num) => {delay(() => {addTwo(num)}, 100 );}

function addTwo(num) {
console.log(num + 2)
return num + 2
}

const delay = (callback, wait) => {
setTimeout(callback, wait)
}
var delayAddByTwo = (num) => {
delay(() => {addTwo(num)}, 100);
}
console.log(delayAddByTwo)
delayAddByTwo(6)
// expected result 8
// actual result --- Uncaught TypeError: delayAddByTwo is not a function

关于javascript - 使用 setTimeout 的闭包示例无法识别函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59978439/

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