【js进阶】-函数柯里化

一、高阶函数

在正式聊函数柯里化之前,我这里给大家补充下高阶函数的概念和应用:

1.1、什么是高阶函数?

高阶函数英文叫 Higher-order function,它的定义很简单,就是至少满足下列一个条件的函数:

  • 接受一个或多个函数作为输入
  • 输出一个函数

也就是说高阶函数是对其他函数进行操作的函数,可以将它们作为参数传递,或者是返回它们。 简单来说,高阶函数是一个接收函数作为参数传递或者将函数作为返回值输出的函数。

1.2、高阶函数例子

其实平时开发中经常会用到高阶函数,只是之前你不清楚其概念而已,来看下下面几个函数:

  1. Array.prototype.map
  2. Array.prototype.filter
  3. Array.prototype.reduce
  4. Array.prototype.sort

这三个数组的方法函数就是高阶函数,因为它们都接收一个回调函数作为参数,满足第一个条件

高阶函数其中一个优点就是在某种情况下可以让代码更加简洁,我们就拿map方法来举例,如果不用map这个高阶方法的话,要实现对一个现有数组中每个元素*2的需求

不使用高阶函数:

const arr1 = [1, 2, 3, 4];
const arr2 = [];
for (let i = 0; i < arr1.length; i++) {
   
   
  arr2.push( arr1[i] * 2);
}
console.log( arr2 );
// [2, 4, 6, 8]
console.log( arr1 );
// [1, 2, 3, 4]

使用map高阶函数:

const arr1 = [1, 2, 3, 4];
const arr2 = arr1.map(item => item * 2);
console.log( arr2 );
// [2, 4, 6, 8]
console.log( arr1 );
// [1, 2, 3, 4]

从上面例子中不难看出用map方法可以轻松实现上述需求,其他两个方法其实也是同样的道理,这里就不多叙述了

二、函数柯里化

2.1、定义

函数柯里化又叫部分求值,维基百科中对柯里化 (Currying) 的定义为:

在数学和计算机科学中,柯里化是一种将使用多个参数的函数转换成一系列使用一个参数的函数,并且返回接受余下的参数而且返回结果的新函数的技术。

用大白话来说就是只传递给函数一部分参数来调用它,让它返回一个新函数去处理剩下的参数

相信部分同学看完这个概念还是有点稀里糊涂,我们来看个简单例子说明下

function url (a,b,c){
   
   
	return `${
    
    a}://www.${
    
    b
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ronychen’s blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值