1.arguments是一个类数组对象,包含着传入函数中的所有参数。
function showargs() {
console.log( arguments );
}
showargs(1,2,3,4,5);
arguments对象将传入的五个参数以数组的形式保存在里面,还保存了传入函数的实参的个数(length)。而且arguments对象的 __ proto __ 是指向object的,这也说明了它是个类数组对象,而不是一个数组。
2.arguments对象还有一个callee的属性,用来指向拥有这个arguments对象的函数。
function showcallee() {
var a = '这里是代码';
var b = '这是另一段代码';
var c = a + b;
console.log(arguments.callee);
return c;
}
showcallee();
callee属性表示的是当前函数的一个引用
利用arguments实现方法的重载
function add() {
var len = arguments.length,
sum = 0;
for(;len--;){
sum += arguments[len];
}
return sum;
}
console.log( add(1,2,3) ); //6
console.log( add(1,3) ); //4
console.log( add(1,2,3,5,6,2,7) ); //26
由于js是一种弱类型的语言,没有重载机制,当我们重写函数时,会将原来的函数直接覆盖,这里我们能利用arguments,来判断传入的实参类型与数量进行不同的操作,然后返回不同的数值。