zoukankan      html  css  js  c++  java
  • 函数的arguments为什么不是数组?如何转化成数组?

    arguments本身并不能调用数组方法,它是一个另外一种对象类型,属性从0开始排,依次为0,1,2...最后还有callee和length属性。我们也把这样的对象称为类数组

    1. Array.prototype.slice.call()

    function sum(a, b) {
      let args = Array.prototype.slice.call(arguments);
      console.log(args.reduce((sum, cur) => sum + cur));//args可以调用数组原生的方法啦
    }
    sum(1, 2);//3

    2. Array.from()

    function sum(a, b) {
      let args = Array.from(arguments);
      console.log(args.reduce((sum, cur) => sum + cur));//args可以调用数组原生的方法啦
    }
    sum(1, 2);//3

    3. ES6展开运算符

    function sum(a, b) {
      let args = [...arguments];
      console.log(args.reduce((sum, cur) => sum + cur));//args可以调用数组原生的方法啦
    }
    sum(1, 2);//3

    4. 利用concat+apply

    function sum(a, b) {
      let args = Array.prototype.concat.apply([], arguments);//apply方法会把第二个参数展开
      console.log(args.reduce((sum, cur) => sum + cur));//args可以调用数组原生的方法啦
    }
    sum(1, 2);//3
  • 相关阅读:
    构造器
    方法
    Arrays常用的类
    栈内存和堆内存
    方法的重载
    数组遍历
    Scanner类
    连接符和三元运算符
    逻辑运算和位运算
    CSAPP笔记(第二章 信息的表示和处理)-02
  • 原文地址:https://www.cnblogs.com/vicky24k/p/13928399.html
Copyright © 2011-2022 走看看