1. 理解参数
ECMAScript 函数不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型。也就是说,即便你定义的函数只接收两个参数,在调用这个函数时也未必一定要传递两个参数。之所以会这样,原因是ECMAScript 中的参数在内部是用一个数组来表示的。函数接收到的始终都是这个数组,而不关心数组中包含哪些参数。实际上,在函数体内可以通过arguments对象来访问这个参数数组,从而获取传递给函数的每个参数。
访问第一个元素是arguments[0], 第二个元素是arguments[1],以此类推。用length属性来确定传递进来多少个参数。
2. 模仿方法的重载
function howManyArgs(){
alert(arguments.length);
}
//调用
howManyArgs("string", 45); //2
howManyArgs();//0
howManyArgs(12);//1
执行以上代码一次会出现3个警告框,分别显示2、0、1。由此可见,开发人员可以利用这一点让函数能够接收任意个参数并分别实现适当的功能。请看下面的例子:
function doAdd(){
if(arguments.length == 1){
alert(arguments[0] + 10);
}else if(arguments.length == 2){
alert(arguments[0] + arguments[1] );
}
}
//调用
doAdd(10);//20
doAdd(10,20);//30
3.没有重载
如果在ECMAScript中定义了两个相同名字的函数,则该名字只属于后定义的函数,会覆盖掉之前的。