ES6中高阶函数与柯里化

2018-10-29  本文已影响0人  芒果加奶

高阶函数

一个函数可以接收另一个函数作为参数,这种函数称为高阶函数。

// 举个栗子:
function add (x,y,f){
  return f(x) + f(y)
}
add(5,6,Math.abs) =>11
// 接收了函数f,并且把x,y参数传到函数f中
// es6写法
let add2 = (x,y,f) => f(x)+f(y)
console.log(add2(-1,5,Math.abs)) =>6

柯里化

把接受多个参数的函数变换成接受一个单一参数的函数,并且返回(接受余下参数而且返回结果的)新函数的技术。
张鑫旭的解释通俗又好笑,地址点这里

// 举个栗子
let add =(a,b)=>a+b
console.log(add(1,2))
// 正常写法,需要传递两个参数给add
// add(1)=>NAN(缺少一个参数)
let add2 = a=>b=>a+b
console.log(add2(1)(2))
// 柯里化写法,将参数变换成一个,延迟函数参数的传入
// add2(1) => function(b) {return a+ b}
柯里化特点

多重箭头函数与柯里化

es5写法

let add = function(x){
  return function(y){
    return x+y
  }
}
console.log(add(2)(4)) =>6

箭头函数写法

let add = x => y =>x+y
console.log(add(2)(4))

第一次看有点懵逼,看习惯就好了~

上一篇下一篇

猜你喜欢

热点阅读