阅读目录
柯里化就是将具有多个arity的函数转化为具有较少的arity的函数。——kbrainwave
备注:术语arity(元数):指的是函数的参数个数,例如:function fn(a, b) { //... } function _fn(a, b, c) { //... }函数fn有两个参数(即 2-arity函数)以及_fn有三个参数(即3-arity函数)。
因此,柯里化将一个具有多个参数的函数转化为一系列只需一个参数的函数。
下面,我们看一个简单的例子:function multiply(a, b, c) { return a * b * c; }这个函数接收三个数字并且相乘,然后返回计算结果。
multiply(1,2,3); // 6接下来看看,我们如何用完整参数调用乘法函数。我们来创建一个柯里化版本的函数,然后看看如何在一系列调用中调用相同的函数(并且得到同样的结果)。
function multiply(a) { return (b) => { return (c) => { return a * b * c } } } log(multiply(1)(2)(3)) // 6我们已经将multiply(1,2,3)函数调用形式转化为multiply(1)(2)(3)多个函数调用的形式。
一个单独的函数已经转化为一系列的函数。为了得到三个数字1、2、3的乘法结果,这些数字一个接一个传递,每个数字会预先填充用作下一个函数内联调用。
我们可以分开这个multiply(1)(2)(3)函数调用步骤,更好理解一点。const mul1 = multiply(1); const mul2 = mul1(2); const result = mul2(3); log(result); // 6我们来一个接一个地传递参数。首先传参数1到multiply函数:
let mul1 = multiply(1);以上代码执行会返回一个函数:
return (b) => { return (c) => { return a * b * c } }现在,变量mul1会保持以上的函数定义,这个函数接收参数b。
我们调用函数mul1,传入参数2:let mul2 = mul1(2);函数mul1执行后会返回第三个函数
return (c) => { return a * b * c }关键字:
青岛软件培训
可能你正在寻找一家靠谱的IT培训机构,
渴望突破职业瓶颈,
找一份得体的工作。
恰巧万码学堂正在寻找像你这样不甘平凡的追光者!
我们拒绝纸上谈兵,直接参与真实开发流程!
现在行动,未来可期
立即拨打0532-85025005,预约免费职业规划咨询
前20名咨询者赠送《2025高薪技术岗位白皮书》!
你不是在报名课程,而是在投资五年后的自己!
