ES6中高阶函数与柯里化

高阶函数

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

// 举个栗子:
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))

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容