调用函数时,js通过函数名找到对应的函数对象,然后根据函数按照定义时的参数,和表达式参数列表按顺序匹配,多余的参数舍去,不够的参数按undefined处理,然后执行函数代码。所以,js重载函数需要通过函数代码判断参数值和类型实现。通常定义函数时,把必选参数放在参数列表最前面,可选参数放在参数放在参数列表必须参数后面,方便函数重载。
如函数
function abc(){ alert('abc'); } abc(); function abc(){ alert('bce'); }
输出结果为bce,调用的是最后一个。
但是我们可以使用f.arguments[0]和f.arguments[1]得到调用时传入的第一和第二个参数,然后根据判断,间接实现重载
function test(){
if(f.arguments.length == 2){
alert(f.arguments[0]+f.arguments[1]);
}else{
alert(f.arguments[0]);
}
}
test(10); //结果为10;
test(10,30),//结果为40。
08-05