rest参数与arguments伪数组

一、argumens伪数组

  JavaScript中,arguments对象是比较特别的一个对象,实际上是当前函数的一个内置属性。也就是说所有函数都内置了一个arguments对象,arguments对象中存储了传递的所有实参。arguments是一个伪数组,因此及可以进行遍历,例如我们要求多个数之和时,就可以用到arguments:

function sum(){
  let sum;
  for(let i = 0; i<arguments.length;i++){
    sum += arguments[i];
  }
  return sum
}

  其中需要注意的时arguments虽然可以使用length属性,且length属性会根据传入实参的变化而变化,但是arguments并不是数组,因为它并不能使用Array构造函数中原型对象prototype的方法,举个小例子:

  var arr = new Array(1,2,3,4,5);
  arr.forEach(function{...任意操作..});
  function random(){
  arguments.forEach(function(){...任意操作...}) //此时浏览器就会报错
}

二、rest参数

  ES6中的rest参数与argument是伪数组作用相类似,都可以用来存储所以传入的实参,形式为(...变量名),不同的是该变量名是一个数组。同样还是多个数字求和:

function sum(...values){
  let sum;
  for(var val of values){
    sum += val;
  }
  return sum;
}

  此外还要注意rest参数之后不能再有其他参数即function f(a,...b,c)就会报错

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容