博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一道柯里化面试题
阅读量:6376 次
发布时间:2019-06-23

本文共 1440 字,大约阅读时间需要 4 分钟。

这是一道朋友在群里发的一道题,我之前不是很懂柯里化,就自己试着写了一下,不知道算不算柯里化,望指教~

下面是题目:

function curry() {        // your code.....    }    ================================    //写好之后一下代码可以正常运行输入正确    function add(a, b, c) {        return a + b + c;    }        let addEx = curry(add);    console.log(addEx(1,2,3) === 6);    console.log(addEx(1,2)(3) === 6);    console.log(addEx(1)(2,3) ===6);    console.log(addEx(1)(2)(3)===6);    function multi(a, b, c, d) {        return a * b * c * d    }        const multiEx = curry(multi)    console.log(multiEx(2, 3, 4, 5) === 120) //=>true    console.log(multiEx(2, 3, 4)(5) === 120) //=>true    console.log(multiEx(2, 3)(4, 5) === 120) //=>true    console.log(multiEx(2)(3)(4)(5) === 120) //=>true复制代码

我自己的代码:

function curry(fn) {            let len = fn.length;            let arr = [];            let getCurry = function () {                return function () {                    let next = [...arguments];                    if (len !== arr.length + next.length) {                        arr.push(...next);                        return getCurry();                    } else {                        let result =  fn.apply(null, [...arr,...next])                        arr = []                        return result                    }                }            }            return getCurry()        }复制代码

我用到了以下知识点:

  1. 扩展运算符传参和扩展运算符相关的数组操作。
  2. 由于是连环调用函数,我用所有调用函数的参数个数来判断。

转载于:https://juejin.im/post/5ad9e14c518825673123c496

你可能感兴趣的文章
完美解決阿里云服务器Nginx 504 Gateway time-out问题
查看>>
SQL Server编程系列(1):SMO介绍
查看>>
HDOJ(HDU) 1465 不容易系列之一(错排)
查看>>
分库分表总结
查看>>
为什么MVC不是一种设计模式(转)
查看>>
集所有的发烧友的创意 共同打造中国最受开发者喜爱的嵌入式开发板!
查看>>
在64位linux下编译32位程序
查看>>
UWP访问KnownFolders.RemovableDevices时(读取U盘文件)抛出异常UnauthorizedAccessException...
查看>>
HBase常用命令汇总——综述(一)
查看>>
PostgreSQL 电子围栏的应用场景和性能(大疆、共享设备、菜鸟。。。)
查看>>
IBM的量子计算商业化之旅来到新一站:20位的量子计算机云计算服务年底上线...
查看>>
2017年度十大新兴技术,多久才能实现?
查看>>
从JDK源码角度看线程池原理
查看>>
【Ian Goodfellow盛赞】一个GAN生成ImageNet全部1000类物体
查看>>
深度探索编译器安全检查
查看>>
【ARM】制作Linux 文件系统
查看>>
java- 分布式- 一致性哈希算法(2)
查看>>
Node.js自动导航模式在Docker的应用
查看>>
代码复用的风险性
查看>>
构建5G网络的核心技术:SDN与NFV的区别与联系
查看>>