函数参数-arguments-reset参数

1、JS中用:arguments

1)存放实参的集合,是一个类似于数组的对象,只有数组的 length,没有数组方法

function  add1(a,b,c) {
   console.log(arguments.length)  // 实参个数1个
}
add1(3)

2)arguments.callee 指向函数自身,可用于递归,严格模式下已禁用

3)限制参数数量:通过arguments.length 限制传入的参数数量

4)将 arguments 转为数组

Array.prototype.slice.apply(arguments)

5)当没有形式参数时,也可以传入参数,通过arguments引用

function  add1() {
    for(var i =0 ;i< arguments.length ; i++) {
       console.log(arguments[i])  // 1,2,3
   }
}
add1(1,2,3)

 6)通过实参个数模拟java,c++重载:是指允许存在多个同名方法,而这些方法的参数不同

function say () {
   switch(arguments.length) {
      case 0: 
        return ;
      case 1:
        return ;
      case 2:
        return ;
   }
}    

2、ES6中用:reset参数

1)形式为 : “...变量名” ,该变量是一个数组

2)reset参数位置在尾参数

3)函数的length 不包括 reset参数

function add(...arg){ }
add(1,2,3)

内部实现原理:
function add() {
  for (var _len = arguments.length, arg = new Array(_len), _key = 0; _key < _len; _key++) {
    arg[_key] = arguments[_key];
  }

}
剩余参数(只有函数的最后一个参数才可以是剩余参数)
function add(num,...arg){ }    // num =1  arg=[2,3]
add(1,2,3)  
posted @ 2019-12-18 15:22  雨夜稻草  阅读(880)  评论(0编辑  收藏  举报