Javascript 在arguments数组上循环时,是否有方法同时获取参数名称和值?

Javascript 在arguments数组上循环时,是否有方法同时获取参数名称和值?,javascript,Javascript,我将创建一个从提供的参数到Javascript函数的querystring。 我在arguments数组上循环,希望获得argumentName及其值 Thans(数组中的var键)?然后在该循环中array[key]访问该值 用于(数组中的var键)?然后在该循环中array[key]访问该值 我不这么认为。Javascript中的类有一个length属性,但是无法获取参数的名称,例如下面的x和y g = function(x,y) { return x+y; } edit:我想从技术上讲,

我将创建一个从提供的参数到Javascript函数的querystring。 我在arguments数组上循环,希望获得argumentName及其值

Thans(数组中的var键)

?然后在该循环中
array[key]
访问该值

用于(数组中的var键)
?然后在该循环中
array[key]
访问该值

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

g = function(x,y) { return x+y; }
edit:我想从技术上讲,给定一个函数
g
,您可以调用

g.toString().match(/function\s+\((.*?)\)/)
它捕获函数的参数列表,然后解析它以获得参数名称列表。

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

g = function(x,y) { return x+y; }
edit:我想从技术上讲,给定一个函数
g
,您可以调用

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

它捕获函数的参数列表,然后对其进行解析以获得参数名称列表。

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

相反,请编写如下函数:

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 });

你需要以不同的方式编写函数,因为你不可能按照你的要求去做,如果你仔细想想,它也没有任何意义;如果使用参数列表中的表达式和其他函数调用调用函数,该怎么办

相反,请编写如下函数:

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 });

不,这是不可能的,我也不确定你认为这会怎样。如果您已经命名了参数,那么您知道参数名称,并且没有问题:

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

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

不,这是不可能的,我不确定您认为这可能如何工作。如果您已经命名了参数,那么您知道参数名称,并且没有问题:

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

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

也许一些示例代码会有所帮助?也许一些示例代码会有所帮助?这仅在数组是对象时有效;如果它是一个普通的旧数组,它将“工作”,但名称将是0,1,2,3。。。N-1,其中N是函数的参数长度。在这种情况下,数组是一个对象,因为Javascript中不存在关联数组。对于实际数组,您仍然有一个正常的for循环,并且已经知道每个值的索引是什么。所以我不太欣赏否决票(不管是谁投的)。我想我的观点是,
arguments
变量不是一个对象,而是一个数组。您提到的
数组
变量必须来自某个地方+您和OP都没有提到它来自何处。(仅供参考,下一票不是我的)只有当数组是对象时才有效;如果它是一个普通的旧数组,它将“工作”,但名称将是0,1,2,3。。。N-1,其中N是函数的参数长度。在这种情况下,数组是一个对象,因为Javascript中不存在关联数组。对于实际数组,您仍然有一个正常的for循环,并且已经知道每个值的索引是什么。所以我不太欣赏否决票(不管是谁投的)。我想我的观点是,
arguments
变量不是一个对象,而是一个数组。您提到的
数组
变量必须来自某个地方+您和OP都没有提到它来自何处。(仅供参考,否决票不是我投的)好的,不管是谁,请给出一个有用的理由。好的,不管是谁,请给出一个有用的理由。