zoukankan      html  css  js  c++  java
  • arguments及arguments.callee

    首先有一个JavaScript函数

    function test(a, b, c, d) {
        return a + b;
    }

     

    在JavaScript中调用一个函数的实参个数可以和被调用函数的形参个数不匹配,要求并没有像java那么严格,因为在ECMAScript中的参数在内部是用一个数组来表示的,函数被调用的时候接收到的始终是这个数组,而不关心数组中包含包含哪些参数,甚至是没有元素也无所谓

    function test(a, b, c, d) {
        return a + b;
    }
    
    console.log(test(10, 20));

      

    这样的代码在JavaScript中是不会报错的,同时在JavaScript中我们可以通过下列代码获得实参及形参的个数

    function test(a, b, c, d) {
        console.log(test.length);//这里获得的是形参的个数
        console.log(arguments.length);//这里获得的是实参的个数,这段代码必须放在函数内部
    }
    
    console.log(test(10, 20));

     

    同时还有一个类似的对象叫做arguments.calee,这个对象通常被用作递归调用

    function test2(num) {
        if(num <= 1) return 1;
        else return num*arguments.callee(num-1);
    }
    
    console.log(test2(5));

     

    如果将arguments.callee(num-1)改为test2(num-1),会在下列调用中会报错

    var F = test2;
    test2 = null;
    console.log(F(5));

     

  • 相关阅读:
    poj 1579(动态规划初探之记忆化搜索)
    hdu 1133(卡特兰数变形)
    CodeForces 625A Guest From the Past
    CodeForces 625D Finals in arithmetic
    CDOJ 1268 Open the lightings
    HDU 4008 Parent and son
    HDU 4044 GeoDefense
    HDU 4169 UVALive 5741 Wealthy Family
    HDU 3452 Bonsai
    HDU 3586 Information Disturbing
  • 原文地址:https://www.cnblogs.com/asen0713/p/6456057.html
Copyright © 2011-2022 走看看