-2

哎呀,我真的想将我的功能定义为:

function myFunction(arguments) {}

但争论是

对应于传递给函数的参数的类数组对象。

但是该死的,我真的很想参考

arguments.a, arguments.b

代替:

arguments[0], arguments[1]
4

3 回答 3

2

因此,您当然可以将参数命名为“参数”,但真正的问题是为什么

Chrome 控制台的简短示例:

> function a(arguments){console.log(arguments.a);}
> a({a:1,b:2})
1
> a("cow")
undefined

不是最好的解决方案。

现在,理论上,您可以进行某种映射:

function foo()
{
   var argMap = ['a','b']
   for(var i = 0; i < argMap.length; i++)
       arguments[argMap[i]] = arguments[i];
   console.log(arguments.a);
}

foo('a is first')
// console logs 'a is first'

但是又一次……为什么?

你不能做的是获取给定上下文中定义的所有变量:没有与 Python 的locals. JS 并不是那样构建的。所以我推荐:

function foo(a,b){
    console.log(a);
}
于 2013-07-19T20:08:47.387 回答
1
function foo (params) {
    // params.a
    // params.b
}

用法:

foo({ a: 123, b: 456 });
于 2013-07-19T19:59:55.233 回答
1

这个怎么样,取自Šime Vidas的回答

function myArgs() {
    arguments = arguments[0];
    console.log(arguments);
}

myArgs({a: 1,b: 2});
于 2013-07-19T20:05:11.263 回答