Javascript JS:去盎司函数中的参数是什么
我试图在我正在处理的现有代码库中掌握一个去盎司函数,但我有一个问题,在看它的时候我无法理解。在此场景中,Javascript JS:去盎司函数中的参数是什么,javascript,Javascript,我试图在我正在处理的现有代码库中掌握一个去盎司函数,但我有一个问题,在看它的时候我无法理解。在此场景中,(…args)是什么?我知道这是一个rest参数,但它来自哪里?这里的args的用途是什么?为什么它不能是空的,然后像setTimout中的fn()那样调用呢 const debounce = (fn, delay) => { let id; return function(...args) { if (id) { clearTime
(…args)
是什么?我知道这是一个rest参数,但它来自哪里?这里的args
的用途是什么?为什么它不能是空的,然后像setTimout中的fn()
那样调用呢
const debounce = (fn, delay) => {
let id;
return function(...args) {
if (id) {
clearTimeout(id)
}
id = setTimeout(() => {
fn(...args);
}, delay);
}
}
从debounce()返回的函数应该与提供的函数完全相同,只是我们限制了调用它的频率。这意味着,如果原始函数应该包含两个参数,那么返回的函数也应该包含两个参数。这就是为什么使用spread
作为一个简单的例子,让我们考虑一个包装函数,它只将1添加到返回的任何东西。
function alsoAdd1(fn) {
return function(...args) {
return fn(...args) + 1
}
}
要使用它,我们可以执行以下操作:
> multiplyAndAdd1 = alsoAdd1(function(x, y) { return x * y })
> multiplyAndAdd1(2, 3)
7
> doubleAndAdd1 = alsoAdd1(function(x) { return x * 2 })
> doubleAndAdd1(2)
5
请注意,我们将多少参数传递到包装函数(如double和DD1)并不重要,它们都会传递到原始函数(double函数)。这是因为我们使用的是扩展运算符
如果我们看一下AlSoad1的定义,就会发现它将返回一个接受任意数量参数的函数,并将它接收到的所有参数传递到函数包装中
debounce()函数也在做同样的事情,只不过还有一点点。这些包装器函数可能有点棘手,因此请慢慢浏览上面的示例,看看您是否能理解它们的作用。从debounce()返回的函数应该与提供的函数完全相同,除了我们限制它被调用的频率。这意味着,如果原始函数应该包含两个参数,那么返回的函数也应该包含两个参数。这就是为什么使用spread
作为一个简单的例子,让我们考虑一个包装函数,它只将1添加到返回的任何东西。
function alsoAdd1(fn) {
return function(...args) {
return fn(...args) + 1
}
}
要使用它,我们可以执行以下操作:
> multiplyAndAdd1 = alsoAdd1(function(x, y) { return x * y })
> multiplyAndAdd1(2, 3)
7
> doubleAndAdd1 = alsoAdd1(function(x) { return x * 2 })
> doubleAndAdd1(2)
5
请注意,我们将多少参数传递到包装函数(如double和DD1)并不重要,它们都会传递到原始函数(double函数)。这是因为我们使用的是扩展运算符
如果我们看一下AlSoad1的定义,就会发现它将返回一个接受任意数量参数的函数,并将它接收到的所有参数传递到函数包装中
debounce()函数也在做同样的事情,只不过还有一点点。这些包装器函数可能有点让人费解,因此,试着慢慢地浏览上面的例子,看看你是否能理解它们在做什么。因为有时候你可能想用参数调用你的去模糊函数?因为有时候你可能想用参数调用你的去模糊函数?@scotty…解释得很好,非常感谢much@scotty...brilliantly我解释过了,非常感谢