如何在javascript中获取arguments对象中每个参数的名称

时间:2012-12-04 14:02:10

标签: javascript

在javascript中,我们有一个参数对象,它是一个我们可以查询的不太完整的数组。

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

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

arguments[2].name == "embedded'

显然上述情况不起作用。

3 个答案:

答案 0 :(得分: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){}为函数提供尽可能多的参数。

答案 1 :(得分:0)

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

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

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

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

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

我不确定你想要实现的目标......如果你使用位置参数而第三个参数被称为“嵌入式”,那么arguments[2]的名称将永远是“嵌入式”。但是,虽然您知道在编写代码时,参数的名称不会存储在您可以方便地访问它们的任何位置。

答案 2 :(得分: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