js不支持标准的重载方式,不允许多个同名函数同时存在,只有最后一个留下
重载
相同函数名,不同形参列表的多个函数,在调用时可根据传入的实参值不同,自动选择匹配的函数
功能代码
function payByPhone(){
consle.log(`手机支付`);
}
function payByMoney(money){
console.log(`现金支付`);
}
函数名过多,用同一个函数代替
function pay(){ ... }
function pay(money){ ... }
function pay(carId,pwd){ ... }
pay();
pay(money);
pay(carId,pwd);//js中不能用
js中不能用
为减少函数名个数,减轻调用者的负担,不能写多个同名函数,只能写一个函数,写几个形参无法满足所有情况,所以不写形参。
借助于函数内的一个特殊对象arguments来获得实参值
arguments
每个函数内,一定都包含的一个,可直接使用的,专门接受所有传入函数的实参值的类数组对象
类数组对象
长的像数组的对象
根据argument中获得实参值个数或实参值的内容/类型不同,来判断,选这不同的执行过程
JS变通实现重载
function pay(){
if(arguyments.length==0){
console.log(`手机支付`);
}else if(argument.length==1){
console.log(`现金支付`);
}else{
consle.log(`刷卡支付`);
}
}