什么是js柯里化(curry)?
2024-09-08 14:18:21
在数学和计算机科学中,柯里化是一种将使用多个参数的一个函数转换成一系列使用一个参数的函数的技术。
举例来说,一个接收3个参数的普通函数,在进行柯里化后,柯里化版本的函数接收一个参数并返回接收下一个参数的函数,该函数返回一个接收第三个参数的函数。最后一个函数在接收第三个参数后,
将之前接收到的三个参数应用于原普通函数中,并返回最终结果。
来看这个例子:
//普通函数
function fn(a,b,c,d,e) {
console.log(a,b,c,d,e)
}
//生成的柯里化函数
let _fn = curry(fn); _fn(1,2,3,4,5); // print: 1,2,3,4,5
_fn(1)(2)(3,4,5); // print: 1,2,3,4,5
_fn(1,2)(3,4)(5); // print: 1,2,3,4,5
_fn(1)(2)(3)(4)(5); // print: 1,2,3,4,5
对于已经柯里化后的_fn函数来说,当接收的参数数量与原函数的形参数量相同时,执行原函数;
当接收的参数数量小于原函数的形参数量时,返回一个函数用于接收剩余的参数,直至接收的参数数量与形参数量一致,执行原函数。
最新文章
- C#的委托
- 高德地图JavaScript开发
- Mysql常见四种索引的使用
- winkawaks模拟器
- WPS2013三合一全套精品视频教程-【word,excel,powerpoint】
- hdu2807 矩阵乘法+floyd
- MySQL DBA的个人修养
- Ubuntu LAMP搭建
- HDU1106
- SqlBulkCopy使用介绍以及注意事项
- BZOJ3881 Divljak
- [原][openstack-pike][controller node][issue-3][horizon] dashboard show internal error 500 Cannot serve directory /var/www/html
- awk 进阶,百万行文件取交集
- textarea 标签 属性
- Matlab 中以分数显示结果
- vue里面computed的运用理解
- bootstrap栅格系统错位问题
- 没有main函数的helloworld
- IEnumerable<;T>; 接口和GetEnumerator 详解
- 深入理解磁盘文件系统之inode(转)