JS中的arguments模拟JAVA 的重载

重载(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));

原文地址:https://www.cnblogs.com/shuimuDT/p/6125708.html