在递归而不是迭代中实现debouncing函数的原因是什么?

时间:2016-09-22 21:53:37

标签: javascript recursion debouncing

在这篇文章中,我们有一个debouncing功能片段: Can someone explain the "debounce" function in Javascript

它使用递归作为算法。但是,这似乎不适合典型的递归情况,其中每个步骤都有一个上一步的 较小的 实例。我想知道使用递归是否有任何优势?对我来说,这种方法不可避免地会通过递归调用来增加调用堆栈的负担。有人可以列出一些支持这种递归方法的原因吗?感谢。

1 个答案:

答案 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()所做的事情,除了它只会做一次而不是快速连续多次。