函数的arguments类数组对象

hdc-web / 2024-10-29 / 原文

函数属性和arguments

◼ 我们知道JavaScript中函数也是一个对象,那么对象中就可以有属性和方法。
◼ 属性name:一个函数的名词我们可以通过name来访问;
◼ 属性length:属性length用于返回函数参数的个数;
    注意:rest参数是不参与参数的个数的;

认识arguments

◼ arguments 是一个 对应于传递给函数的参数的类数组(array-like)对象。
◼ array-like意味着它不是一个数组类型,而是一个对象类型:
    但是它却拥有数组的一些特性,比如说length,比如可以通过index索引来访问;
    但是它却没有数组的一些方法,比如filter、map等;
  // arguments 类数组对象
      console.log(arguments)
      // 可以通过索引获取内容
      console.log(arguments[0])
      console.log(arguments[1])
      // 遍历
      for (var arg of arguments) {
              console.log(arg)
      }

arguments转Array

 ◼ 在开发中,我们经常需要将arguments转成Array,以便使用数组的一些特性。
    常见的转化方式如下
    ◼ 转化方式一:
        遍历arguments,添加到一个新数组中;
    将arguments转为数组方式一:
    //     var newArguments = []
    //     for (var arg of arguments){
    //         newArguments.push(arg)
    //     }
    ◼ 转化方式二:较难理解(有点绕),了解即可
        调用数组slice函数的call方法;
    var newArgs = [].slice.apply(arguments)
        console.log(newArgs)
    ◼ 转化方式三:ES6中的两个方法
        Array.from
        […arguments]
        var newArguments = Array.from(arguments)
        console.log(newArguments)
        // 遍历之后拿到每个元素放到数组里
        var newArgs2 = [...arguments]