有没有一种方法可以从函数外部检索函数的参数

时间:2019-03-18 17:42:32

标签: javascript frontend

我知道标题听起来很混乱。

考虑这样的代码段

function foo(){
  ...
}

var arr = [foo(1),foo(2),foo(3),...]

我想找到一种方法来从arr数组中检索这些参数,以获得类似的结果     [1,2,3,...]

有人可以帮我吗?

4 个答案:

答案 0 :(得分:1)

通常,这种操作是相反的方法。您可以声明

var arr = [1,2,3,...]
var foos = arr.map(n => foo(n))

现在您可以访问原始参数和foo结果。

答案 1 :(得分:0)

正如其他答案所建议的那样,最好在传递参数之前存储它们。

或者,填充数组的最简单方法是返回以前传递的参数,如下所示:

function foo(arg) {
   //does things
   return arg;
}

let arr = [foo(1), foo(2), ...]

如果该函数用于返回其他内容,则可以通过返回如下对象来返回一些内容:

function foo(arg){
   //does things
   return {
     thing: thing,
     arg: arg
   };
}

let arr = [foo(42).arg, ...]

哪种方式来回传递相同的信息,据我了解,这正是您所要求的。

答案 2 :(得分:-1)

如果您尝试获取一个单一参数列表:

    function foo() {
      /* .. */
      return arguments[0]
    }
    console.log([foo(1), foo(2), foo(3)]) // [1,2,3]

但这不适用于多个:

    function foo() {
      /* .. */
      return arguments[0]
    }
    console.log([foo(1), foo(2,3), foo(4,5)]) // [1,2,4]

这将把每个args放在一个数组上

    function foo() {
      /* .. */
      return arguments
    }
    console.log([...foo(1), ...foo(2,3), ...foo(4,5)]) // [1,2,3,4,5]

如果您不想使用return语句:此示例将把所有参数放在全局数组上。

let all_args = []

function foo() {
  Array.from(arguments).forEach(a => {
    all_args.push(a)
  })
  /*..*/
}

foo(1)
foo(2)
foo(3,4)
console.log("args:", all_args);   // [1,2,3,4]
foo(5)
console.log("args:", all_args);   // [1,2,3,4,5]

all_args = [] // Reset
foo(1,1,2,3,5)
console.log("args:", all_args); // [1,1,2,3,5]

答案 3 :(得分:-2)

我认为您正在寻找的是Javascript中的参数。

请查看以下文档,这些文档应为您指明正确的方向/为您提供所需的答案。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments