我刚刚遇到了一个非常有趣的任务需要解决,但我自己无法完成。
创建一个执行以下输入的函数!
console.log(foo(4)(5)(6)); // output: 120
解决方案不是这样的:
function foo(number1,number2,number3){
return number1 * number2 * number3;
}
理论上它必须使用嵌套函数。
最佳答案
这称为柯里化(Currying)。您需要返回函数,它的情况返回一个返回总数的函数。这里我们还使用了一个术语closure .
function foo(a){
return function(b) {
return function(c){
return a * b * c;
}
}
}
console.log(foo(4)(5)(6));
使用 ES6 语法
var foo = a => b => c => a*b*c;
console.log(foo(4)(5)(6));
对于无限级别,您可以做到
function foo(value){
infinite.total = value;
function infinite(val) {
infinite.total *= val;
return infinite;
}
infinite.toString = function() { return infinite.total; }
return infinite;
}
console.log(foo(4)(5)(6)(7));
var total = foo(4)(5)(6)(7);
console.log(total);
但是在这种情况下,当显式或隐式调用 toString()
时,这将输出总数
关于javascript - 如何像这样将函数嵌入到JavaScript中的函数中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42112778/