代码之家  ›  专栏  ›  技术社区  ›  user160820

循环参数数组时,是否有方法同时获取参数名和值?

  •  1
  • user160820  · 技术社区  · 14 年前

    我创建了一个从提供的参数到javascript函数的查询字符串。 我正在对arguments数组进行循环,希望得到argumentname及其值。

    桑斯

    4 回复  |  直到 14 年前
        1
  •  3
  •   Pointy    14 年前

    您需要以不同的方式编写函数,因为不可能按照您的要求执行,而且如果您考虑它,它实际上没有任何意义;如果您的函数是用参数列表中的表达式和其他函数调用调用的呢?

    相反,编写这样的函数:

    function yourFunction(object) {
      for (argName in object) {
        if (object.hasOwnProperty(argName)) {
          var argValue = object[argName];
          // now argName is an argument name, and
          // argValue is the value, and you can do
          // whatever you like
        }
      }
    }
    

    调用函数时,将执行以下操作:

    if (whatever)
      yourFunction({ arg1: value1, arg2: value2, arg3: value3 });
    
        2
  •  1
  •   Jason S    14 年前

    我不这么认为。这个 Function javascript中的类有一个长度属性,但无法获取参数的名称,例如下面的x和y

    g = function(x,y) { return x+y; }
    

    编辑 :我想从技术上讲,给定一个函数 g 你可以打电话

    g.toString().match(/function\s+\((.*?)\)/)
    

    它捕获函数的参数列表,然后解析该列表以获取参数名称列表。

        3
  •  1
  •   Tim Down    14 年前

    不,这是不可能的,我不知道你怎么想。如果您已经命名了参数,那么您就知道这些参数的名称,并且没有问题:

    function f(arg1, arg2, arg3) {
        var params = {
            arg1: arg1,
            arg2: arg2,
            arg3: arg3
        };
        // Do stuff with params
    }
    

    否则,您所拥有的只是一个类似数组的没有名称的值集合。

        4
  •  -1
  •   CharlesLeaf    14 年前

    for( var key in array ) ?然后进入那个循环 array[key] 访问值。