ES6胖箭头功能参数无法理解

时间:2017-03-22 07:52:36

标签: javascript callback ecmascript-6

任何人都可以清楚地解释如何将参数传递给“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是函数变量,如果我传递参数,参数如何传递给第一个日志函数,然后再添加函数?任何解释这个的好文章或任何人都可以解释这个吗?

1 个答案:

答案 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部分适用于其第一个参数。