一、高阶函数
在正式聊函数柯里化之前,我这里给大家补充下高阶函数的概念和应用:
1.1、什么是高阶函数?
高阶函数英文叫 Higher-order function,它的定义很简单,就是至少满足下列一个条件的函数:
- 接受一个或多个函数作为输入
- 输出一个函数
也就是说高阶函数是对其他函数进行操作的函数,可以将它们作为参数传递,或者是返回它们。 简单来说,高阶函数是一个接收函数作为参数传递或者将函数作为返回值输出的函数。
1.2、高阶函数例子
其实平时开发中经常会用到高阶函数,只是之前你不清楚其概念而已,来看下下面几个函数:
- Array.prototype.map
- Array.prototype.filter
- Array.prototype.reduce
- 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

最低0.47元/天 解锁文章
114

被折叠的 条评论
为什么被折叠?



