javascript - 如何像这样将函数嵌入到JavaScript中的函数中?

标签 javascript function

我刚刚遇到了一个非常有趣的任务需要解决,但我自己无法完成。

创建一个执行以下输入的函数!

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/

相关文章:

javascript - Html、Javascript或Css云滑动

javascript - 在对象数组中查找最大值

javascript - React 和 Firebase : adding date to database causes listener to trigger twice?

javascript - 在一个对象中返回两个不同的返回值

javascript - 让 Jetty Websocket 使用与 JavaScript Websocket 相同的语言

javascript - 如何在nodejs中将输出发布到同一网页?

php - 带有特殊字符的函数

python - 阿克曼函数理解

javascript - Mozilla 开发者网络上的嵌套函数和闭包的描述中缺少什么?

jquery - 如何使用 jQuery 在第二次单击时反转 CSS 动画