一、知识点(函数柯里化)
柯里化是高阶函数应用中的一种,高阶函数是指至少满足下列条件之一的函数:
- 函数可以作为参数被传递
- 函数可以作为返回值输出
一个currying的函数首先会接受一些参数,接受了这些参数之后,该函数不会立即求值,而是继续返回另外一个函数,刚才传入的参数在函数形成的闭包中被保存起来。待到函数被真正求值的时候,之前传入的所有参数都会被一次性用于求值。
所谓"柯里化",就是把一个多参数的函数,转化为单参数函数。
简单的说:只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数。你可以一次性地调用 curry 函数,也可以每次只传一个参数分多次调用。
1. 柯里化实例
let add = function(x, y){
return x + y
}
将上述函数柯里化:
var addCurrying = function(x) {
return function(y) {
return x + y
}
}
var addTen = addCurrying(10)
addTen(2)// 12
//简写:
addCurrying(10)(2);
2. 柯里化作用(待补充实例)
- 参数复用;
- 提前返回;
- 延迟计算/运行
二、解题
function functionFunction(str) {
return function(str2){
return str + ", " + str2;
}
}
参考链接:
JS中的柯里化(currying)