在递归而不是迭代中实现去抖功能的原因是什么?
What are reasons for the debouncing function implemented in recursion instead of iteration?
在这个 post 中,我们有一段去抖功能:
Can someone explain the "debounce" function in Javascript
它使用递归作为算法。但是,这似乎不符合典型的递归情况,其中每个步骤都有一个 smaller 前一步的实例。我想知道使用递归是否有任何优势?对我来说,这种方法不可避免地会因递归调用而加重调用堆栈的负担。有人可以列出一些支持这种递归方法的理由吗?谢谢
那里没有递归。
我认为您将内部关键字 function
误认为是对正在定义的函数的调用。
事实并非如此
这是一个函数,returns 一个(不同的)函数。
当您调用 debounce(foo)
时,您会返回一个函数。
例如
function foo (foothing) {
console.log(foothing)
}
debounced_foo = debounce(foo)
然后你可以调用那个函数:
debounced_foo(my_param)
debounced_foo(my_param)
debounced_foo(my_param)
它会做 foo()
会做的事情,除了它只会做一次而不是快速连续做很多次。
在这个 post 中,我们有一段去抖功能: Can someone explain the "debounce" function in Javascript
它使用递归作为算法。但是,这似乎不符合典型的递归情况,其中每个步骤都有一个 smaller 前一步的实例。我想知道使用递归是否有任何优势?对我来说,这种方法不可避免地会因递归调用而加重调用堆栈的负担。有人可以列出一些支持这种递归方法的理由吗?谢谢
那里没有递归。
我认为您将内部关键字 function
误认为是对正在定义的函数的调用。
事实并非如此
这是一个函数,returns 一个(不同的)函数。
当您调用 debounce(foo)
时,您会返回一个函数。
例如
function foo (foothing) {
console.log(foothing)
}
debounced_foo = debounce(foo)
然后你可以调用那个函数:
debounced_foo(my_param)
debounced_foo(my_param)
debounced_foo(my_param)
它会做 foo()
会做的事情,除了它只会做一次而不是快速连续做很多次。