arguments对象
在函数代码中,使用特殊对象arguments,开发者无需明确指出参数名,就能访问它们。例如,在函数sayHi()中,第一个参数是message。用arguments[0]也可以访问这个值,即第一个参数的值(第一个参数位于位置0,第二个参数位于位置1,依此类推)。因此,无需明确命名参数,就可以重写函数:
Function sayHi(){
if(arguments[0] == ‘bye’){
return ; 
}
Alert(‘Hello’ + arguments[0]);
}
参数的个数可用arguments.length得到。
与其他程序设计语言不同,ECMAScript不会验证传递给函数的参数个数是否等于函数定义的参数个数。开发者定义的函数都可以接受任意个数的参数(根据Netscape的文档,最多能接受25个),而不会引发任何错误。任何遗漏的参数都会以undefined传递给函数,多余25的参数将忽略。
用arguments对象判断传递给函数的参数个数,即可模拟函数重载:
function doAdd(){
if(arguments.length == 1){}
alert(arguments[0] + 10);
}else if(arguments.length == 2){
alert(arguments[0] + arguments[1]);
}
}
doAdd(10);//20
doAdd(30,20);//50
虽然不如重载那么好,不过已足可避开ECMAScript的这种限制。