重载(overload):
相同函数名,不同参数列表的多个函数,在调用时,可根据传入参数的不同,自动选择对应的函数执行。
为什么: 减少API的数量,减轻调用者的负担
何时: 今后一项任务,只是根据传入参数的不同,执行不同的操作时,就用重载。
如何:
问题: js的语法不支持重载,因为js中不允许同时存在多个同名函数。
解决:
arguments: 每个函数内自动创建的
自动接收所有传入函数的参数值的 类数组对象——长的像数组的对象。
vs 数组: 相同: 1. 下标访问每个元素
2. length属性记录元素个数
3. 用for 遍历
不同: 不是数组类型
不能使用数组API
例子:函数中传入不同的参数列表而返回不一样的结果
列子1 运用 "arguments.length" 的属性
function pay(){
if(arguments.length==1){
console.log("现金结账");
}else if(arguments.length==2){
console.log("刷卡结账");
}else if (arguments.length==0)
{
console.log("微信结账");
}
}
pay(100);
pay("123455","555");
pay();
列子2 运用 "arguments[i]" 遍历arguments
function add(){
//遍历arguments中每个元素,同时声明sum=0
//将argumenrs中当前元素累加到sum上
for(var sum=0,i=0;i<arguments.length;i++){
sum+=arguments[i];
}
return sum;
}
console.log(add(1,2,3),add(1,2,3,4,5));