zoukankan      html  css  js  c++  java
  • JavaScript arguments类数组

    1. 什么是类数组

      arguments 是一个类数组对象。代表传给一个function的参数列表。

       我们来传一个实例。

     function printArgs() {

         console.log(arguments);

       }

       printArgs("A", "a", 0, { foo: "Hello, arguments" });

     // ["A", "a", 0, Object]

     再看看 arguments 表示的内容,其表示了函数执行时传入函数的所有参数。在上面的例子中,代表了传入 printArgs 函数中的四个参数,可以分别用 arguments[0]、 arguments[1]… 来获取单个的参数

    2. arguments 的操作

     arguments.length

        arguments 是个类数组对象,其包含一个 length 属性,可以用 arguments.length 来获得传入函数的参数个数。

       arguments 转数组

        Array.prototype.silce.call(arguments);  // 或者使用  [].slice.call(arguments);

       修改 arguments 值

      function foo(a) {

          "use strict";

          console.log(a, arguments[0]);

          a = 10;

          console.log(a, arguments[0]);

          arguments[0] = 20;

          console.log(a, arguments[0]);

      }

      foo(1);

      // 1 1    //10 1    //10 20

      非严格模式的例子:

      function foo(a) {

          console.log(a, arguments[0]);

          a = 10;

          console.log(a, arguments[0]);

          arguments[0] = 20;

          console.log(a, arguments[0]);

      }

      foo(1);

      // 1 1    //10 10     //20 20

      在严格模式下,函数中的参数与 arguments 对象没有联系,修改一个值不会改变另一个值。而在非严格模式下,两个会互相影响。

    3.  数组与类数组对象

      数组具有一个基本特征:索引。这是一般对象所没有的。

    const obj = { 0: "a", 1: "b" };

    const arr = [ "a", "b" ];

      我们利用 obj[0]、arr[0] 都能取得自己想要的数据,但取得数据的方式确实不同的。obj[0] 是利用对象的键值对存取数据,而arr[0] 却是利用数组的索引。事实上,Object 与 Array 的唯一区别就是 Object 的属性是 string,而   Array 的索引是 number。

      下面看看类数组对象。

      伪数组的特性就是长得像数组,包含一组数据以及拥有一个 length 属性,但是没有任何 Array 的方法。再具体的说,length 属性是个非负整数,上限是 JavaScript 中能精确表达的最大数字;另外,类数组对象的 length 值无法自动改变

      

  • 相关阅读:
    MySQL修改root密码的多种方法
    (转)云存储:阿里云OSS 、又拍云和 七牛 的比较
    微博feed系统的推(push)模式和拉(pull)模式和时间分区拉模式架构探讨
    Feed系统架构资料收集
    百万用户时尚分享网站feed系统扩展实践
    (转)浅谈MD5加密算法中的加盐值(SALT)
    json转换成list map集合
    android在假设绘制自己定义的bitmap,然后返回给ImageView
    APPCAN学习笔记003---原生开发与HTML5技术
    【问题解决】syntax error: unexpected end of file或-bash: ./full_build.sh: /bin/bash^M: bad interpreter: No
  • 原文地址:https://www.cnblogs.com/syomm/p/6013542.html
Copyright © 2011-2022 走看看