JavaScript实现柯里化(咖喱)函数的案例

  介绍

小编给大家分享一下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实现柯里化(咖喱)函数的案例有了一定的了解,想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

JavaScript实现柯里化(咖喱)函数的案例