高阶函数与ES6多箭头函数(柯里化)

在阅读react的部分源码时,逐渐接触了许多高阶函数和多箭头函数,想把知识点整理一下

1.高阶函数

所谓高阶函数,就是一个函数就可以接收另一个函数作为参数,或者是返回一个函数。
例如:

var ADD =function add(a) {
 return function(b) {
  return a+b
  }
  }
  调用:ADD(2)(3)即可获得结果

常见的高阶函数有map、reduce、filter、sort等

(1) map

map接受一个函数作为参数,不改变原来的数组,只是返回一个全新的数组

  var arr = [1,2,3,4,5]
  var arr1 = arr.map(item => item = 2)// 输出[1,1,1,1,1]
(2) reduce

reduce也是返回一个全新的数组。reduce接受一个函数作为参数,这个函数要有两个形参,代表数组中的前两项,reduce会将这个函数的结果与数组中的第三项再次组成这个函数的两个形参以此类推进行累积操作

  var arr = [1,2,3,4,5]
  var arr2 = arr.reduce((a,b)=> a+b)
  console.log(arr2) // 15
(3)filter

filter返回过滤后的数组。filter也接收一个函数作为参数,这个函数将作用于数组中的每个元素,根据该函数每次执行后返回的布尔值来保留结果,如果是true就保留,如果是false就过滤掉(这点与map要区分

  var arr = [1,2,3,4,5]
  var arr3 = arr.filter(item => item % 2 == 0)
  console.log(arr3)// [2,4]
(4)sort

实现对数组中每项按照ASCII码大小进行排序

ES6多箭头函数实现高阶函数

所谓多箭头函数
指的是如下形式:

(a)=>(b)=>(c)=>{}
等价于
function(a) {
return function(b) {
  return function(c) {
   .....
   }
 }
}

根据所查资料得到的结论是:多个连续箭头函数就是 es6的多次柯里化的写法
而所谓柯里化指的是:把接受多个参数的函数变换成接受一个单一参数的函数,并且返回(接受余下的参数而且返回结果的)新函数的技术

=>n 个连续箭头组成的函数实际上就是柯里化了 n - 1次。前 n - 1 次调用,其实是提前将参数传递进去,并没有调用最内层函数体,最后一次调用才会调用最内层函数体,并返回最内层函数体的返回值。然后依次向外层函数执行

举例:

funcs.reduce((left, right) => (...args) => right(left(...args)));

关于柯里化的部分资料来源于:
https://www.cnblogs.com/xueandsi/p/6032578.htm

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值