美文网首页
callee和caller

callee和caller

作者: 闪电西兰花 | 来源:发表于2017-04-06 17:50 被阅读0次

arguments是个类数组对象,用来保存传入函数中的所有参数,也就是实参对象

  • arguments对象有个属性叫callee,该属性是个指针,指向拥有这个 arguments对象的函数
//下面是一个阶乘函数,用了递归算法,但问题是函数执行和函数名的耦合性较高,也就是说如果有一天函数名改了或者本身是个匿名函数,那么必须也要修改函数内部
function factorial(num){
    if(num<=1){
        return 1;
    }else{
        return num * factorial(num-1);
    }
}
//于是为了消除紧密耦合,可以使用arguments.callee
function factorial(num){
    if(num<=1){
        return 1;
    }else{
        return num * arguments.callee(num-1);        //这里不需要再使用函数名了
    }
}
  • ECMAScript5规范了另一个函数对象的属性:caller,保存着调用当前函数的函数的引用(当前函数的直接父函数),如果在全局作用域中调用,它的值为null
function outer(){
    inner();
}
function inner(){
    console.log(inner.caller);       //返回outer函数体
}
outer();
//同样可以用此属性松散耦合性
function outer(){
    inner();
}
function inner(){
    console.log(arguments.callee.caller);       //返回outer函数体
}
outer();

相关文章

  • 常用但易忘的一些知识点

    递归调用arguments.callee(); caller和callee:arguments.callee返回当...

  • callee和caller

    callee 属于arguments的一个属性,是一个指针,指向拥有arguments对象的函数,在函数内部,ar...

  • callee和caller

    callee和caller这两个属性在命名上非常相似,总是后搞混,现在梳理一下。callee是arguments的...

  • callee和caller

    arguments是个类数组对象,用来保存传入函数中的所有参数,也就是实参对象 arguments对象有个属性叫c...

  • caller和callee

    关键词caller :返回一个函数的引用,这个函数调用了当前的函数callee:返回正在执行的函数本身的引用,它是...

  • caller和callee

    这两天在查阅资料的时候发现了一些之前没见过的小内容 1.caller 这个方法一般来说用的很少,就简单的介绍一下 ...

  • caller和callee

    caller返回调用当前函数的引用,如果是函数自身调用,则返回null,callee返回正在被执行函数的引用,即返...

  • vue cli3 babel7 配置 移除严格模式插件

    报错信息: Uncaught TypeError: 'caller', 'callee', and 'argume...

  • JavaScript中的callee, caller, call

    2018/08/29 21:39 callee, caller, call 1. callee 在函数内部,有两个...

  • JavaScript函数_05 caller | callee

    caller:调用函数的函数 注意点:在全局作用域中调用,指向的是null callee:函数自身 callee ...

网友评论

      本文标题:callee和caller

      本文链接:https://www.haomeiwen.com/subject/pleqattx.html