arity(参数个数)是函数所需的形参的数量。 函数柯里化(Currying)意思是把接受多个 arity 的函数变换成接受单一 arity 的函数。
换句话说,就是重构函数让它接收一个参数,然后返回接收下一个参数的函数,依此类推。
柯里化在不能一次为函数提供所有参数情况下很有用。 因为它可以将每个函数的调用保存到一个变量中,该变量将保存返回的函数引用,该引用在下一个参数可用时接受该参数。 下面是使用柯里化函数的例子:
//例子1
function add(x) {
return function(y) {
return function(z) {
return x + y + z;
};
};
}
add(10)(20)(30);
//例子2
function add(x) {
return y => z => x + y + z;
}
add(10)(20)(30);
//例子3
function unCurried(x, y) {
return x + y;
}
function curried(x) {
return function(y) {
return x + y;
}
}
const curried = x => y => x + y
curried(1)(2)
小结
函数式编程到此暂时完结,我们来复习一下他的两个原则和常用函数:
-
不要更改变量或对象 - 创建新变量和对象,并在需要时从函数返回它们。 提示:使用类似
const newArr = arrVar的东西,其中 arrVar 是个数组,只会创建对现有变量的引用,而不是副本。 所以更改 newArr 中的值会同时更改 arrVar 中的值。 -
声明函数参数 - 函数内的任何计算仅取决于参数,而不取决于任何全局对象或变量。
-
filter 接收一个回调函数,将回调函数内的逻辑应用于数组的每个元素,新数组包含根据回调函数内条件返回
true的元素` -
map方法是迭代数组中每一项的方式之一。 在对每个元素应用回调函数后,它会创建一个新数组(不改变原来的数组)。 它这样做时没有改变原始数组。
-
reduce 方法分析数据:
- 第一个参数称为
叠加器,它是上一次迭代中回调函数的返回值, - 第二个参数是当前正在处理的数组元素,
- 第三个参数是该参数的索引,
- 第四个参数是在其上调用
reduce方法的数组。
-
every方法用于检测数组中所有元素是否都符合指定条件。 如果所有元素满足条件,返回布尔值true,反之返回false -
some方法用于检测数组中任何元素是否满足指定条件。 如果有一个元素满足条件,返回布尔值true,反之返回false。 -
使用 sort 方法按字母顺序给数组排序, sort 方法会产生改变原始数组中元素顺序的副作用
-
slice 方法可以从已有数组中返回指定元素。
slice返回一个新数组,不会修改原始数组。 -
concat方法,这是一种在不改变原始数组的前提下,将数组组合成新数组的方法 -
split方法将一个字符串分割成一个字符串数组。 -
join方法用来把数组中的所有元素放入一个字符串。 并通过指定的分隔符参数进行分隔。 -
函数柯里化
如果不清楚前2章的可以移步我的专栏,谢谢~ juejin.cn/column/7078…