2017-0719-腾讯IMWeb-牛客网编程题

已知 fn 为一个预定义函数,实现函数 curryIt,调用之后满足如下条件:

1、返回一个函数 a,a 的 length 属性值为 1(即显式声明 a 接收一个参数)

2、调用 a 之后,返回一个函数 b, b 的 length 属性值为 1

3、调用 b 之后,返回一个函数 c, c 的 length 属性值为 1

4、调用 c 之后,返回的结果与调用 fn 的返回值一致

5、fn 的参数依次为函数 a, b, c 的调用参数

示例1

输入

var fn = function (a, b, c) {return a + b + c}; curryIt(fn)(1)(2)(3);

输出

6


function curryIt(fn) {

var length = fn.length,

args = [];

//fn为函数,其length为其接受的形参的显式声明的数目

//新建空的数组

var result =  function (arg){

args.push(arg);

length --;

if(length <= 0 ){

return fn.apply(this, args);

} else {

return result;

}

}

return result;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 2,103评论 1 10
  • //Clojure入门教程: Clojure – Functional Programming for the J...
    葡萄喃喃呓语阅读 3,770评论 0 7
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,842评论 2 17
  • 每道题都写多种解法,开阔思路。一共45道题。因为牛客网oj不支持ES6语法,所以大多数写法只给出传统写法。 题目描...
    szu_bee阅读 2,470评论 3 23
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,933评论 18 139