关于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 为函数本身定义参数的长度
}

func(1, 2);

arguments.callee表示函数体本身,通过开发者模式我们可以看到arguments.callee的属性结构和函数本身一致。

都是拥有caller length arguments name prototype _proto_这些属性的。

这样在有了callee的话,我们在使用递归时就无需通过函数名称进行函数的调用,而是直接使用该不变属性。

这样做的话有利于我们未来再修改了函数名称后的维护。

如:

var a = function(){
    count ++;
    if(count <10){
        arguments.callee();// 在a修改为其他名称时,这里无需修改
    }else{
        alert(count);
    }
};
a();

在递归时使用arguments.callee是一个有利于未来维护的好习惯。

关于arguments.callee的用途,布布扣,bubuko.com

时间: 2024-10-10 10:39:22

关于arguments.callee的用途的相关文章

arguments.callee概念和用途

argument代表当前函数的参数数组 arguments.callee表示引用当前正在执行的函数,或者说是调用arguments.callee的函数对象的引用,它给匿名函数提供了一种自我引用的方式.. var aa = function() { alert(aa === arguments.callee);}aa(); 执行上述代码,可以看到alter出来的结果是true,注意,此处用的是“===”,就是说方法aa与arguments.callee对象类型和值都相等. 上面讲述了概念,下面讲a

caller.arguments.callee.eval

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

js函数的内部属性---arguments,callee,caller

在接下来的几篇文章中,我大家谈谈函数的内部属性,arguments,callee,caller (1)arguments,是一个类数组对象,其中包含了传入函数的所有参数,主要用途是,保存函数的参数: 代码1: function aa(b){alert(arguments);} aa(4); function aa(a,b,c,d){alert(arguments.length);} aa(1,2,3,4); function aa(a,b,c,d){alert(arguments[2]);} a

js-arguments.callee一些用途

[转自]js-arguments.callee一些用途:http://blog.sina.com.cn/s/blog_a4f313580101713i.html 递归调用例子:求一个数的阶乘 //普通实现 function fun2(n) { if (n > 1) { return n * fun2(n -1); } return 1;} var r1 = fun2(3); alert(r1); //使用匿名函数 var r2 = (function(n) { if (n > 1) { ret

JavaScript函数之实际参数对象(arguments) / callee属性 / caller属性 / 递归调用 / 获取函数名称的方法

函数的作用域:调用对象 JavaScript中函数的主体是在局部作用域中执行的,该作用域不同于全局作用域.这个新的作用域是通过将调用对象添加到作用域链的头部而创建的(没怎么理解这句话,有理解的亲可以留言告诉我, 谢谢).因为调用对象是作用域链的一部分,所以在函数体内可以把这个对象属性作为变量来访问. 调用对象的属性包括:用var声明的局部变量,函数形参,还有一种特殊的属性arguments 函数的实际参数:实际参数对象 arguments对象,用来引用实际参数对象.函数的arguments对象并

我对arguments.callee的理解

基本理解: 你怎么看待一个函数呢?又如何看待一个函数对象呢?函数和Function之间的关系到底是什么?我觉得理解这些对理解arguments.callee有所帮助. 先说说auguments.callee是什么:它是一个指针,它指向当前函数,这个函数没有当前的参数环境,是一个纯净的Function实例,就好比一个厕所,对象只是去厕所撒尿,撒完尿它会出来,厕所还是厕所. 案例说明: 网上找到一个例子,可以很好说明它的用途,怎么看耦合性高低,假如我这样调用 let copy = factorial

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是一个类似数组但不是数组的对象,说它类似数组是因为

arguments callee caller

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