函数柯里化,你有了解过吗?估计很多会蒙,尤其是对于新手。其实不难,简单介绍下。
函数柯里化是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。弄个简单例子来玩玩,实现 sum(1)(2)(3) 返回结果是1,2,3之和。如下:
- function sum(a) {
- return function(b) {
- return function(c) {
- return a+b+c;
- }
- }
- }
- console.log(sum(1)(2)(3)); // 6
引申:实现一个curry函数,将普通函数进行柯里化:
- function curry(fn, args = []) {
- return function(){
- let rest = [...args, ...arguments];
- if (rest.length < fn.length) {
- return curry.call(this,fn,rest);
- }else{
- return fn.apply(this,rest);
- }
- }
- }
- //test
- function sum(a,b,c) {
- return a+b+c;
- }
- let sumFn = curry(sum);
- console.log(sumFn(1)(2)(3)); //6
- console.log(sumFn(1)(2, 3)); //6
网友评论文明上网理性发言 已有0人参与
发表评论: