在方法内部执行方法
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 一个自定义函数,它包括第一个变量(来自它的范围)并期望另一个变量它被称为。
我目前正在 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 一个自定义函数,它包括第一个变量(来自它的范围)并期望另一个变量它被称为。