1.参数
ECMAScript函数不介意你传递多少个参数,也不在乎传递参数的类型。因为ECMAScript内部接受参数实际上是使用一个数组来表示的。因此在函数体内我们可以通过arguments对象来访问这个参数数组,从而获得传递进来的每一个参数。
function howManyArgs(){
alert(arguments.length)
}
howManyArgs('string',45);//2
howManyArgs();//0
howManyArgs(12);//1
另一个与参数相关的的重要方面就是arguments对象可以与命名参数一起使用
function toAdd(num1,num2){
if(argument.length == 1){
alert(num1+10)
}else if(argument.length == 2){
alert(argument[0]+20)
}
}
2.函数重载
以下使用c++举例说明什么是函数重载。
重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个函数完成不同的功能。这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。不能只有函数返回值类型不同。
也就是说通过对同名的函数进行不同的参数传递就可以实现函数完成不同的功能。而我们已经知道ECMAScript函数是如何接受参数的了,也是就是对于参数我们是无差别的处理。因此如果在ECMAScript中定义了两个同名函数,我们通常会执行后一个定义的函数。
如果想要模仿重载效果,我们就需要在一个函数体内通过对参数的类型和数量进行判断来执行不同的动作。