callee的用法

callee返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文。[function.]arguments.callee可选项 function 参数是当前正在执行的 Function 对象的名称。说明:callee 属性的初始值就是正被执行的 Function 对象。callee 属性是 arguments 对象的一个成员,他表示对函数对象本身的引用,这有利于匿名函数的递归或确保函数的封装性,例如下边示例的递归计算1到n的自然数之和。而该属性仅当相关函数正在执行时才可用。更有需要注意的是callee拥有length属性,这个属性有时候用于验证还是比较好的。arguments.length是实参度,arguments.callee.length是形参长度,由此能够判断调用时形参长度是否和实参长度一致。

//callee能够打印其本身function calleeDemo() {  alert(arguments.callee);}//递归计算var sum = function(n){  if (n <= 0) return 1;  else return n +arguments.callee(n - 1)}比较一般的递归函数:var sum = function(n){  if (1==n) return 1;  else return n + sum (n-1);}调用时:alert(sum(100));其中函数内部包含了对sum自身的引用,函数名仅仅是个变量名,在函数内部调用sum即相当于调用一个全局变量,不能很好的体现出是调用自身,这时使用callee会是个比较好的方法。
时间: 2024-10-25 20:12:40

callee的用法的相关文章

arguments.callee的用法

1.今天在看高阶函数,其实currying的一个函数中,有那个arguments.callee,表示不见过,查了查. arguments.callee 在哪一个函数中运行,它就代表哪个函数. 一般用在匿名函数中. 在匿名函数中有时会需要自己调用自己,但是由于是匿名函数,没有名子,无名可调. 这时就可以用arguments.callee来代替匿名的函数 var currying = function ( fn ) { var args = []; return function () { if(

addEventlistener监听的事件完成一次后自动取消与jquery的one方法比较;animate动画制作,arguments.callee的用法

1 <!doctype html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta id="viewport" name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum

apply、call、callee、caller初步了解

在javascript中这四货通常一起出现介绍,楼主记忆力实在是太差经常忘记用法,故记此文. apply和call apply和call是函数原型的一个方法,调用者的类型必须是函数.官方解释:应用某一对象的一个方法,用另一个对象替换当前对象.通常用于改变上下文的this,这点和bind相似.apply和call的区别:方法传递的参数不同.apply传递的是一个数组,如果木有第二个参数两者用法结果相同. 使用方法:fun.call(thisArg[, arg1[, arg2[, -]]]) fun

JavaScript中callee,caller,argument的理解

argument代表当前函数的参数数组: 1.callee的用法: argument.callee表示谁引用的这个函数 其他解释:(arguments.callee表示引用当前正在执行的函数,或者说是调用arguments.callee的函数对象的引用,它给匿名函数提供了一种自我引用的方式.通过如下例子,可以更好的理解概念.) 例如:var fun=function(){ console.log(fun===argument.callee) } fun();   //true; 执行上述代码,可

ES5规范之严格模式

现如今JavaScript早已不仅仅是网页特效脚本了,更多是用来构建大规模的Web应用,所以语言规范的制定者们也逐渐意识到要对JS进行语法方面的规范,并且有意地引导开发者编程习惯,消除一些不规范和不安全的语法,进而更好的满足以后大规模开发的要求,ES5规范中的严格模式就是其中重要的一环,今天我们就来详细介绍一下严格模式的使用以及它对语法的种种限制和规范. 启用严格模式只需使用'use strict';这条语句即可,对于支持严格模式的浏览器,在声明'use strict';语句之后的代码都将会在严

arguments.callee 调用函数自身用法

arguments.callee 调用函数自身用法 arguments.callee 在哪一个函数中运行,它就代表哪个函数. 一般用在匿名函数中. 在匿名函数中有时会需要自己调用自己,但是由于是匿名函数,没有名子,无名可调. 这时就可以用arguments.callee来代替匿名的函数. (function(n){ if(n > 1) return n* arguments.calle(n-1); return n; })(10); JSON.parse()和JSON.stringify()前端

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

arguments.callee用法

arguments.callee 在哪一个函数中运行,它就代表哪一个函数. 一般用在匿名函数中 在匿名函数中有时会需要自己调用自己,但是由于是匿名函数,没有名子,无名可调. 这时就可以用arguments.callee来代替匿名的函数. (function(n){ if(n > 1) return n* arguments.callee(n-1); return n; })(10); 上述代码就是用匿名函数实现的计算10的阶乘.用arguments.calle代替匿名函数.

js arguments.callee &amp; caller的用法及区别

在函数内部,arguments.callee该属性是一个指针,指向拥有这个arguments对象的函数; 而函数对象的另一个属性:caller,这个属性保存着调用当前函数的函数的引用,如果是在全局作用域中调用当前函数,它的值为null. 1 <script type="text/javascript"> 2 function inner(){ 3 alert(arguments.callee); //指向拥有这个arguments对象的函数,即inner() 4 alert