zoukankan      html  css  js  c++  java
  • 怎样把function中的arguments变成普通数组

    当我们在写一个具有处理可变长度参数的函数时,需要对arguments做一些操作。但是arguments它并不是一个数组,没有数组的各种操作,而且,JS的严格模式中不允许更改它的值。

    这时我们需要将它的值拷贝到另一个地方。如果以这种方式:var a=arguments;操作的话a得到的只是一个引用,也就是浅拷贝,不能满足我们的需求。当然我们还可以:

    var a=[];
    for(var i=0;i<arguments.length;i++){
        a.push(arguments[i]);
    }

    但是,显然这种方法比较繁琐,得用循环来操作;

    我们想到数组里面有一个slice方法经常用来做数组的拷贝,但是aruments没有这个方法。我们又想到可以通过call来给一个方法来指定方法的接收者;

    由于aruments是一个类数组对象(有一组值和一个length属性来表示它的长度),我们可以借用数组的方法来进行操作:

    var a=[].slice.call(argments);

    完整代码:

    function test(){
      var a=[].slice.call(arguments);
      console.log(a);
    }
    
    test(1,2,3,4,5,6);//[1,2,3,4,5,6]

    这样,我们在a中进行任何操作都不会影响arguments了,而且a现在为数组,可以进行任何的数组操作了

  • 相关阅读:
    【SpringBoot】SpringBoot中请求路径问题
    CodeForces
    CodeForces
    7-36 旅游规划 (25 分(Dijkstra)
    CodeForces
    CodeForces
    CodeForces
    CodeForces
    CodeForces
    CodeForces
  • 原文地址:https://www.cnblogs.com/lingtong/p/4079080.html
Copyright © 2011-2022 走看看