1

在 javascript 中,我们有 arguments 对象,它不是我们可以查询的数组。

如何获取每个参数的名称?

例如,如果我想知道第三个参数被称为嵌入,我将如何发现这一点?

arguments[2].name == "embedded'

显然上面的方法是行不通的。

4

3 回答 3

1

恐怕这是不可能的。只有值本身被传递:

function logArguments(){
    for(key in arguments)
        console.log(key, arguments[key]);
}
var someObject = {someProperty:false};

logArguments("1", 3, "Look at me I'm a string!", someObject);
// Returns:
// 0 1
// 1 3
// 2 "Look at me I'm a string!"
// 3 Object {someProperty: false}

所以你只能得到他们的数组索引。

但是,您可以使用它for(key in arguments){}为函数提供任意数量的参数。

于 2012-12-04T14:07:33.110 回答
0

arguments对象是参数列表,它不存储参数的名称。

一些浏览器允许您使用该toString方法来获取函数的代码:

function a(arg1){}
// undefined
a.toString()
// "function a(arg1){}"

如果您需要命名参数,通常传递一个对象:

$.ajax({
  url: "test.html",
  cache: false
})

我不确定您要实现什么...如果您使用位置参数并且第三个参数称为“嵌入”,那么名称arguments[2]将始终为“嵌入”。但是,尽管您知道在编写代码时,参数的名称并没有存储在您可以方便地访问它们的任何地方。

于 2012-12-04T14:04:29.470 回答
0

像这样的东西

function a() {
    var arr = Array.prototype.slice.call(arguments, 0, arguments.length);
    for (var aux in arr) {
        alert(aux + ":" + arguments[aux]);
    }
}

src: https ://developer.mozilla.org/en-US/docs/JavaScript/Reference/Functions_and_function_scope/arguments

于 2012-12-04T14:08:06.540 回答