我是靠谱客的博主 安详荔枝,这篇文章主要介绍函数的callee和caller,现在分享给大家,希望可以做个参考。

callee是函数的arguments这个特殊对象的一个属性,它会指向这个arguments对象的函数:

function fn1(){
    console.log(arguments.callee);        //输出函数fn1本身
}
fn1()
callee的可以消除函数内部调用自己的耦合性,
 
var num = 3
function fn1(num){
    if(num <= 1){
        return 1
    }else{
        return num * fn1(num-1)
    }
}
//可以使用callee
function fn1(num){
    if(num <= 1){
        return 1
    }else{
        return num * arguments.callee(num-1)
    }
}

还可以使用callee查看形参与实参的个数差别

function fn2(a,b,c){
    console.log('实参数:',arguments.length);            //2
    console.log('行参数:',arguments.callee.length);       //3
}
fn2(1,2)
 
函数对象还有一个caller属性,该属性指向调用当前函数的引用,也就是调用当前函数的函数。但如果要是在全局中调用当前函数,caller的值就是null:
function fn1(){
    console.log(fn1.caller);       //fn1的caller属性指的是函数fn2
    console.log(arguments,callee.caller)    //同上,使用arguments的callee属性,指的是当前函数,当前函数的caller属性,指的是其调用者,也就是函数fn2
}
function fn2(){
}
fn2()

 

转载于:https://www.cnblogs.com/CZforever/p/10853637.html

最后

以上就是安详荔枝最近收集整理的关于函数的callee和caller的全部内容,更多相关函数内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(122)

评论列表共有 0 条评论

立即
投稿
返回
顶部