当前位置:网站首页>JS函数柯里化
JS函数柯里化
2022-07-31 05:20:00 【前端备忘录】
首先看看柯里化到底是什么?
维基百科上说道:把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。
什么情况下会用到函数柯里化?
1、我们不方便传入参数时,例如:
//回调
function a(b){
}
Promise.resolve().then(a(b));
如上所写,在then里面直接调用a方法的话,那么给then里面的就不是一个函数了,但是then里面是要给一个函数的。如果要达到这个效果的话,就要运用柯里化,如下所示:
Promise.resolve().then(a.bind(this,123));
2、我们写了一个方法,但是这个方法很多时候调用起来参数是固定的,例如:
fuction inputTest(reg, value){
} //验证表单的函数
假设有10个表单需要验证是否纯数字,每一次都需要输入验证规则和值,10个表单就要调用10次。对于验证是否纯数字来说,函数的第一个参数验证规则(reg)都是一样的,没必要输入10次,所以这里就需要柯里化,具体做法如下:
const numberTest = inputTest.bind(this, /^[0-9]*$/);
numberTest(123);
柯里化怎么实现
function aCurry(num1){
return function(num2){
console.log(num1,num2)
}
}
function a(num1, num2){
}
aCurry(1)(2)
柯里化函数会接收到固定参数,然后再柯里化函数里面,返回一个新的函数,接收剩余参数。
手写实现一个bind函数
Function.prototype.mybind = function(thisArg){
if(typeof this !== "function"){
return;
}
var _self = this;
// args 获取第一个方法内的全部参数
var args = Array.prototype.slice.call(arguments,1);
return function(){
// 将后面方法里的全部参数和args进行合并
var newArgs = args.concat(Array.prototype.slice.call(arguments));
return _self.apply(thisArg, newArgs);//调用原方法本身
}
}
总结
函数的柯里化,返回的是一个函数的函数。其实现方式,需要依赖参数以及递归,通过拆分参数的方式,来调用一个多参数的函数方法,以达到减少代码冗余,增加可读性的目的。
边栏推荐
猜你喜欢
随机推荐
力扣.剑指offer05.替换空格
闭包,装饰器,类方法,静态方法,委托属性
Oracle入门 04 - Vmware虚拟机安装配置
对van-notice-bar组件定义内容进行设置
安装显卡过程中遇到问题汇总
链表理论基础
英语学习笔记
测试——用例篇
Webrtc从理论到实践二: 架构
十分钟教你玩转分支语句!!!!!小白速进,新手福利!!
Websocket协议解析与QT代码示例
911崩了,自养号测评环境IP有哪些更好的选择
【博学谷学习记录】超强总结,用心分享 | 软件测试 UnitTest框架
力扣.有效的字母异位词
Unity加载GIf动画
在 AWS 上从零开始设置 Incredibuild 构建系统
IDEA overview and installation and debugging
mobaxterm 编码问题解决
性能测试概述
多线程(1)









