首页 > 代码库 > callee

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比较好。。

callee