介绍
小编给大家分享一下JavaScript实现柯里化(咖喱)函数的案例,希望大家阅读完这篇文章后大所收获、下面让我们一起去探讨吧!
实现效果
const curry_fn=咖喱(fn); fn (1、2、3)==curry_fn (1) (2) (3);
实现思路
- <李>
通过闭包的方式储存传入参数
李> <李>通过函数的长度属性获得参数个数
李> <李>当参数个数不够时直接返回方法
李> <李>存储的参数个数等于原函数参数个数时执行原函数
李>- <李>
如果使用ES6参数默认值,长度将不等于实际参数个数
李> <李>参数由参数获取,ES6直接使用其他参数实现
李>源码实现
函数咖喱(fn) { var长度=fn.length;//获取原函数的参数个数 var args=[];//参数存储传入参数 返回函数curryFn () {//将参数转换成数组 var curryArgs=Array.prototype.slice.call(参数); args=args.concat (curryArgs); 如果(arg游戏。长度比;长度){ 把新的错误(& # 39;参数长度错误,) }//存储的参数个数等于原函数参数个数时执行原函数 如果(arg游戏。长度===){ 返回fn。应用(null, args); }//否则继续返回函数 返回curryFn; }; }
ES6版
函数咖喱(fn) { 让长度=fn.length; 让args=[]; 返回函数curryFn (…curryArgs) { args=args.concat (curryArgs); 如果(arg游戏。长度比;长度){ 把新的错误(& # 39;参数长度错误,) } 如果(arg游戏。长度===){ 返回fn (…args); } 返回curryFn; } }
看完了这篇文章,相信你对JavaScript实现柯里化(咖喱)函数的案例有了一定的了解,想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!