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;

}

你可能感兴趣的:(2017-0719-腾讯IMWeb-牛客网编程题)