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

时间: 2024-10-13 22:46:12

callee的相关文章

arguments,caller,callee之理解

arguments对象代表正在执行的函数和调用它的函数的参数,arguments是一个不是数组但类似 数组的对象,它具有同数组一样的访问性质及方式,可以由arguments[n]来访问对应单个参数的值, 并有length属性,需要注意的是arguments对象存储的是实际传递给函数的参数,只有在函数开始时才可用. caller返回对一个函数的引用,该函数调用当前函数.如果函数由顶层调用,caller包含的值为null. callee返回正在被执行的Funciton对象,也就是被指定的Functi

arguments.callee

arguments.callee在哪个函数中运行,他就代表哪个函数,一般在匿名函数中.在匿名函数中有时需要自己调用自己,但是由于是匿名函数,没有名字,所以可以用arguments.callee来代替匿名的函数. arguments: arguments 该对象代表正在执行的函数和调用它的函数的参数. [function.]arguments[n]参数function:选项.当前正在执行的 Function 对象的名字. n :选项.要传递给 Function 对象的从0开始的参数值索引.说明Ar

js的隐含参数(arguments,callee,caller)使用方法

在提到上述的概念之前,首先想说说javascript中函数的隐含参数: arguments arguments 该对象代表正在执行的函数和调用它的函数的参数.[function.]arguments[n]参数function:选项.当前正在执行的 Function 对象的名字. n :选项.要传递给 Function 对象的从0开始的参数值索引.说明Arguments是进行函数调用时,除了指定的参数外,还另外创建的一个隐藏对象.Arguments是一个类似数组但不是数组的对象,说它类似数组是因为

JavaScript的callee 属性

返回正被执行的 Function 对象,即指定的 Function 对象的正文. [function.]arguments.callee 备注 可选 function 参数是当前执行的 Function 对象的名称. callee 属性是 arguments 对象的一个成员,该属性仅当相关函数正在执行时才可用. callee 属性的初始值是正被执行的 Function 对象. 这将允许匿名函数成为递归的. 示例 JavaScript function factorial(n){ if (n <=

关于arguments.callee的用途

arguments为js函数中两个隐藏属性中的一个(另一个为this) arguments表示所有传入的参数,为类数组(array-like)类型,arguments.length表示传入参数的长度,但是没有数组类型的其他方法. var func = function(arg1, arg2, arg3){ alert(arguments.length); // 2 为实际调用参数的长度 alert(arguments.callee.length); // 3 为函数本身定义参数的长度 } fun

arguments callee caller

arguments 该对象代表正在执行的函数和调用它的函数的参数. Arguments是一个类似数组但不是数组的对象,说它类似数组是因为其具有数组一样的访问性质及方式,可以由arguments[n]来访问对应的单个参数的值,并拥有数组长度属性length.还有就是arguments对象存储的是实际传递给函数的参数,而不局限于函数声明所定义的参数列表,而且不能显式创建 arguments对象.arguments对象只有函数开始时才可用 callee属性是 arguments 对象的一个成员,它表示

caller.arguments.callee.eval

------------------------------------ 1.函数的调用方式,与this的指向问题,原型对象中的this 2.对象创建的几种方式! 3.str.replace 页面初始化话之后,初始化的页面DOM元素绑定事件,通过给实例对象设置一个方法. this.container =$(html) 将事件绑定在容器上由子元素触发,一个独立的功能就是一个容器 在绑定事件的的时候,将实例化对象先保存一下,这样在事件绑定的函数中就能使用这实例化对象了 this.container包

caller和callee的区别

caller返回一个函数的引用,这个函数调用了当前的函数;callee返回正在执行的函数本身的引用,它是arguments的一个属性. callercaller返回一个函数的引用,这个函数调用了当前的函数.使用这个属性要注意:1 这个属性只有当函数在执行时才有用2 如果在javascript程序中,函数是由顶层调用的,则返回null 1 function a() {}; 2 function b() { 3 a(); 4 }; 5 b(); 6 //输出结果为 b的函数体 7 即: functi

js中arguments,caller,callee,apply的用法小结

<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <style type="text/css"> *{padding: 0;margin: 0;} #img{position: absolute;} </style> </head> <body> <img id="img" src=&quo

callee关键字使用可降低代码耦合度

<script type="text/javascript"> //callee关键字使用 /* 求n的阶层的函数 n! = n*(n-1)! 5! = 5*4*3*2*1 4! = 4*3*2*1 3! = 3*2*1 2! = 2*1 1! = 1 */ function jiecheng(n){ if(n==1){ return 1; } else { //return n*jc(n-1); return n*arguments.callee(n-1); } } co