JavaScript的参数对象(参数数组)arguments

 2016年01月05日    751     声明


在JavaScript中,函数(function)参数被表现为一个类似数组Array对象arguments对象。该对象是一个参数列表,通过这个对象你可以向函数体传入已指定参数之外的额外参数,也就是说,你可以在创建参数时不指定任何参数而通过arguments对象对象访问所要传入的参数。


1. arguments对象

通过arguments关键字可以访问arguments对象:

arguments

arguments并不是函数属性,而是函数内部的一个局部变量。


2. arguments对象的使用

在函数内部,可以通过arguments对象访问所有的参数。在JavaScript中以下两种参数访问方式相同:

function myFun(arg1, arg2) {
  console.log(arg1);
  console.log(arg2);
  console.log(arguments[0]);
  console.log(arguments[1]);
}

myFun('itbilu.com', 'IT笔录');
//itbilu.com
//IT笔录
//itbilu.com
//IT笔录

通过arguments对象可以额外增加函数参数,甚至定义函数时不指定参数:

function myFun(arg1) {
  console.log(arguments[0]);
  console.log(arguments[1]);
}

myFun('itbilu.com', 'IT笔录');
//itbilu.com
//IT笔录

arguments在对Function对象调用apply()方法时非常有用:

function show (site, domain) {
  console.log('%s-%s', site, domain);
}

function itbilu (){
  show.apply(this, arguments);
}
itbilu('IT笔录', 'itbilu.com');  //IT笔录-itbilu.com

利用arguments对象,你可以方便的定义一个连接字符串的方法:

function myConcat(separator) {
  var args = Array.prototype.slice.call(arguments, 1);
  return args.join(separator);
}

myConcat(".", "itbilu", "com");  //itbilu.com