zoukankan      html  css  js  c++  java
  • callee

    首先解释callee

      参考网站 http://www.css88.com/archives/1706

    callee是arguments的一个成员,仅当函数正在执行的时候才可用,so用于递归也行

    代码示例:

    (function () {
    
        function calleeDemo() {
            console.log(arguments.callee);
        }
    
        calleeDemo();
        
    })();

    结果输出

    它的应用:

    一、判断形参和实参的长度是否一致

      实参 arguments.length

      形参 arguments.callee.length

    代码示例:

      function judgeParameterLength(arg1,arg2) {
            if (arguments.length==arguments.callee.length){
                console.log("形参与实参长度一致");
            }else {
                console.log("实参长度"+arguments.length,"形参长度"+arguments.callee.length);
            }
        }
    
        judgeParameterLength(1,2); //形参与实参长度一致
        judgeParameterLength(1); //实参长度1 形参长度2

    二、递归

    function sum(n) {
            if (n == 1)
                return 1;
            else
                return n + arguments.callee(n - 1);
        }
        console.log(sum(10)); //55

    常规写法

    function sum(n) {
            if (1 == n)
                return 1;
            else
                return n + sum(n - 1);
        }
        console.log(sum(10)); //55

    理解:

      两者结果是一样的。

      非要找区别的话,正如我参考的那个网站,callee更能体现是调用自身的方法。

      而我个人的理解是,这点还防止了方法重名造成的危害,毕竟js没有重载╮(╯▽╰)╭

      所以还是写callee比较好。。

  • 相关阅读:
    hdu3874
    spoj D-query
    hdu4348
    hdu4417
    hdu2665
    [LUOGU] P1057 传球游戏
    [CODEVS] 2193 数字三角形WW
    [CODEVS] 2189 数字三角形W
    [模板] 线段树
    [模板] 树状数组
  • 原文地址:https://www.cnblogs.com/chenluomenggongzi/p/6133197.html
Copyright © 2011-2022 走看看