在方法内部执行方法

Executing a method inside a method

我目前正在 FreeCodeCamp 中进行 JavaScript 练习,我的代码应该使用的测试用例之一是如下所示的函数调用:

addTogether(2)(3);

这是我得到的基本功能:

function addTogether() {
  return;
}

当我运行下面的代码时:

function addTogether() {
  return arguments;
}

在编辑器提供的控制台中,我得到:

TypeError: addTogether(...) is not a function

指令提示使用 arguments 对象,它适用于只有一个参数对象(即 addTogether(2, 3);)的测试用例函数调用,但不适用于我的那个如上所示。

有没有办法 access/utilize 单独的参数对象,当它们采用我上面显示的格式时?

注意:我不需要任何类型的答案来解决问题,只需要有关访问这些类型函数调用的参数的任何技术的信息。

帮助,不胜感激。

不要将其视为两组独立的论点。把它想象成你正在调用另一个函数(你就是)。函数是 JavaScript 中的第一个 class 值,因此您可以像使用任何其他值一样使用它们。这包括从函数中返回它们。

var f = function(y) {
  console.log('f:', y);
};

var getF = function(x) {
  console.log('getF:', x);
  return f;
};

getF(1)(2);

函数还可以使用存在于任何父作用域中的值。松散地说,执行此操作的函数称为 closures.

function createGetX(x) {
  return function() {
    // Since x is in the parent scope, we can use it here
    return x;
  }
}

var one = createGetX(1);
console.log(one()); // Always
console.log(one()); // returns
console.log(one()); // one

你可以用闭包来做到这一点。

function addTogether(x) {    
  return function(y) {
     return x+y;   
  }   
}

有时它可以帮助我按特定顺序思考。您可以阅读代码 "addTogether(2)" 并在阅读“(3)”之前停止。

从那里您可以看到练习希望您拥有第一部分 "addTogether(2)" return 一个函数...因为任何时候都有“()”,这意味着正在调用一个函数。

所以"addTogether(2)"需要return一个接受一个参数的函数。稍后 3 将作为输入的一个示例。

我认为名称 "addTogether" 有点令人困惑..因为该功能的工作是弥补 return 添加的实际功能。

很难在没有太多帮助的情况下解释这个,但是你在这里的大部分工作是 return 一个自定义函数,它包括第一个变量(来自它的范围)并期望另一个变量它被称为。