m0m*_*eni 5 javascript functional-programming currying
我目前正在处理个人时间的编程问题,要求我创建一个可以这种方式调用的javascript函数.
add(1) // 1
add(1)(2) // 3
add(1)(2)(3); // 6
add(1)(2)(3)(4); // 10
add(1)(2)(3)(4)(5); // 15
Run Code Online (Sandbox Code Playgroud)
我弄清楚的是如何使它在最后一次调用时返回一个值.
例如,为了add(1)(2)工作,那么add(1)必须返回一个函数,但是根据指令add(1)自己调用时会返回1.
我假设你能克服这个问题的一种方法是弄清楚add函数被连续多少次被调用,但我想不出有办法实现这一点.有没有人有任何可以指出我正确方向的提示?
也不是不可能,用valueOf()。
function add(initNum) {
var sum = initNum;
var callback = function (num) {
sum += num;
return callback;
};
callback.valueOf = function () {
return sum;
};
return callback;
};
console.log(add(1)(2)==3); //true
console.log(add(1)(1)+1); //3
console.log(add(1)(2)(3).valueOf()); //6Run Code Online (Sandbox Code Playgroud)