在这篇文章中,我们有一个debouncing功能片段: Can someone explain the "debounce" function in Javascript
它使用递归作为算法。但是,这似乎不适合典型的递归情况,其中每个步骤都有一个上一步的 较小的 实例。我想知道使用递归是否有任何优势?对我来说,这种方法不可避免地会通过递归调用来增加调用堆栈的负担。有人可以列出一些支持这种递归方法的原因吗?感谢。
答案 0 :(得分:0)
那里没有递归。
我认为你错误地将内部关键字function
误认为是对正在定义的函数的调用。
情况并非如此
这是一个返回(不同)函数的函数。
当你致电debounce(foo)
时,你会找回一个功能。
e.g。
function foo (foothing) {
console.log(foothing)
}
debounced_foo = debounce(foo)
然后你可以调用那个函数:
debounced_foo(my_param)
debounced_foo(my_param)
debounced_foo(my_param)
它将完成foo()
所做的事情,除了它只会做一次而不是快速连续多次。