zoukankan      html  css  js  c++  java
  • Arguments

    1、非数组,但有数组的特性

    不是一个真正的数组,不可以使用数组的pushpop方法等,但是可以通过数组形式获取各个参数。可以通过转换成为真正的数

    var args = Array.prototype.slice.call(arguments); //转换成真的数组 可以使用push pop等方法

    2、Arguments对象有一个非同寻常的特性.

    当函数具有命名了的参数时, Arguments对象的数组元素是存放函数参数的局部变量的同义词. arguments[]数组和命名了的参数不过是引用同一变量的两种不同方法. 用参数名改变一个参数的值同时会改变通过arguments[]数组获得的值. 通过arguments[]数组改变参数的值也会相应的改变用参数名获取的参数值。

    function b(x, y, a) { console.log(arguments);
    arguments[2] = 10; 
    alert(a);  //10
    console.log(arguments);
    }
    b(1, 2, 3);  
    
    
    function bb(x, y, a) { 
    a = 10;
    alert(arguments[2] );  //10
    }
    bb(1,2,3);
    function f(a, b,c){
       alert(arguments.length);   // result: "2"
        a = 100;
        alert(arguments[0]);       // result: "100"
        arguments[0] = "qqyumidi";
        alert(a);                  // result: "qqyumidi"
        alert(c);                  // result: "undefined"
        c = 2012;                  //c这里是形参中的变量 不可作为全局变量
        alert(arguments[2]);       // result: "undefined"
    }
    
    f(1, 2);
    alert(c);  //c in not defined

     3、arguments.callee指向函数自身

    arguments.callee返回此arguments对象所在的当前函数引用。在使用函数递归调用时推荐使用arguments.callee代替函数名本身。

  • 相关阅读:
    短信
    solr测试用的配置
    中文词启动
    配置域
    applicationContext-redis.xml
    Redis端口配置
    springDataRedis 依赖
    FastDFSClient上传图片工具类
    security 页面测试
    PHP图片压缩功能(按比例图片缩放)(转载)
  • 原文地址:https://www.cnblogs.com/lydialee/p/4266027.html
Copyright © 2011-2022 走看看