任何人都可以清楚地解释如何将参数传递给“log”函数,然后在以下代码中“添加”函数。
const add = (x,y) => console.log(x+y);
const log = func => (...args) => {
console.log(...args);
func(...args);
}
const logadd = log(add);
logadd(1,2,3); // 3 //1,2,3
我知道上面的代码也可以写成如下
const add = function(x,y) {
console.log(x,y);
}
const log = function(func){
return function(...args){
console.log(...args);
func(...args)
}
}
const logadd=log(add);
logadd(1,2,3); // 3 //1,2,3
如果logadd是函数变量,如果我传递参数,参数如何传递给第一个日志函数,然后再添加函数?任何解释这个的好文章或任何人都可以解释这个吗?
答案 0 :(得分:0)
首先,箭头函数被称为箭头函数 - 它们既不胖也不瘦。
在func => (...args)
中args
参数用作休息参数(由...
表示)以收集Array
中的所有给定参数([1,2,3]
in你的例子)。使用console.log(...args)
,扩展语法...
用于将console.log
方法应用于args
数组的所有元素。请注意...
语法的含义因具体情况而异。
func(...args)
评估为func(1,2,3)
。由于func
代表add
,它会丢弃第三个参数。
log
是一个更高阶的函数,即一个以另一个函数作为参数的函数。这与currying无关,尽管currying有助于使用更高阶的函数。但是,log
部分适用于其第一个参数。