当前位置:网站首页>函数柯里化(curry)
函数柯里化(curry)
2022-08-10 17:19:00 【Echo-潔】
1、概念
把一个多参数的函数,转化为单参数函数。
2、代码演示
// 柯里化之前
function add(x, y) {
return x + y;
}
add(1, 2) // 3
// 柯里化之后
function addX(y) {
return function (x) {
return x + y;
};
}
addX(2)(1) // 3
扩展一道经典面试题
// 实现一个add方法,使计算结果能够满足如下预期:
add(1)(2)(3) = 6;
add(1, 2, 3)(4) = 10;
add(1)(2)(3)(4)(5) = 15;
function add() {
// 第一次执行时,定义一个数组专门用来存储所有的参数
var _args = Array.prototype.slice.call(arguments);
// 在内部声明一个函数,利用闭包的特性保存_args并收集所有的参数值
var _adder = function() {
_args.push(...arguments);
return _adder;
};
// 利用toString隐式转换的特性,当最后执行时隐式转换,并计算最终的值返回
_adder.toString = function () {
return _args.reduce(function (a, b) {
return a + b;
});
}
return _adder;
}
add(1)(2)(3) // 6
add(1, 2, 3)(4) // 10
add(1)(2)(3)(4)(5) // 15
add(2, 6)(1) // 9
边栏推荐
猜你喜欢

数据库注入提权总结(二)

挑战用五行代码轻松集成登录系统,实现单点登录

Redis下载安装教程 (windows)

v-if指令:操作dom元素(标签)的显示与隐藏

win11安装deepin20.6双系统(双硬盘)

Annual salary of 600,000+?This 100,000-word interview assault book covers all technology stacks from Ali P5 engineers to P7

建筑施工员证怎么考?报名条件及报考时间是什么?

【接入指南 之 直接接入】手把手教你快速上手接入HONOR Connect平台(中)

产品-Axure9英文版,A页面内a1状态跳转B页面的b2状态,(条件跳转状态)

【JDK】Oracle又一个JDK大版本停止扩展技术支持
随机推荐
PC软件问题二[Win10系统将UltraEdit添加到右键菜单的方法]
教你自己搭建一个IP池(绝对超好用!!!!)
BalsnCTF2021
promise笔记(四)
shell中判断文件目录是否存在
【Web3 系列开发教程——创建你的第一个 NFT(8)】如何开发一个成功的 NFT 项目 | NFT 社区建设技巧
Alluxio on Amazon EMR 集成实践
docker中安装mysql
v-if指令:操作dom元素(标签)的显示与隐藏
R语言拟合ARIMA模型:使用forecast包中的auto.arima函数自动搜索最佳参数组合、模型阶数(p,d,q)、如果已知阶数则直接使用arima函数构建模型(order参数指定阶数)
ahx文件转mav文件 工具分享及说明
训练一个神经网络要多久,神经网络训练时间过长
招聘分析2020.6.1
R语言创建列表数据(list):根据名称索引列表元素、双方括号访问单个元素、单方括号访问子列表
PS2手柄通讯协议解析—附资料和源码「建议收藏」
Talk about cloud native data platform
#夏日挑战赛#【ELT.ZIP】啃论文俱乐部——学术科研方法论沉淀辑
神经网络如何提高准确率,神经网络的求解方式
640. 求解方程
电力系统潮流【牛顿-拉夫逊法】(4节点、5节点、6节点、9节点)(Matlab代码实现)