zoukankan      html  css  js  c++  java
  • 浅谈JS的arguments对象

      在JavaScript中,arguments属于当前对象的一个内置属性,arguments非常类似于Array对象,但是又不是实例的Array。比如:

    Array.prototype.testArg = "test";
    function funcArg() {
        alert(funcArg.arguments.testArg);  
        alert(funcArg.arguments[0]);
    }
    
    alert(new Array().testArg); // result: "test"
    funcArg(10);                // result: "undefined"  "10"
    

      arguments对象的长度是由实参个数决定的,形参是函数内部重新开辟内存空间储存的变量,与arguments对象内存空间不重叠。对于arguments和值都存在的情况下,两者值都是同步的,但是针对一个无值得情况下,无值是不会得以同步的,如例:

    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;
        alert(arguments[2]);       // result: "undefined"
    }
    
    f(1, 2);
    

        arguments对象中有一个非常有用的属性:callee。arguments.callee返回此arguments对象所在的当前函数引用。在使用函数递归调用时推荐使用arguments.callee代替函数名本身。

    function count(a){
        if(a<1){
            return 1;
        } 
        return a + arguments.callee(a-1);
    }
    
    var num = count(4);
    alert(num);
    

      差不多常用的就这些吧。如有疑问或见解,多多指正。

  • 相关阅读:
    uboot中打开 debug调试信息的方法
    如何知道外围器件的器件地址PHY_ADDR
    附录:ARM 手册 词汇表
    ARM协处理器CP15寄存器详解
    浅析ARM协处理器CP15寄存器有关指令:MCRMRC
    uboot-的start.S详细注解及分析
    Shell中的算数运算
    Linux下的expect
    Linux 常用工具sysstat之iostat
    Linux的top命令
  • 原文地址:https://www.cnblogs.com/fangshidaima/p/6282880.html
Copyright © 2011-2022 走看看