callee和caller

1人阅读 评论(0) 收藏 举报
分类:

    callee是arguments的一个属性,这个属性指向函数的入口地址。arguments是js函数调用时存储函数参数的一个对象(注意是对象不是数组,可以在函数内部使用instanceof Array 来判定)。

    caller是当一个函数A调用另一个函数B时,函数B这个对象的一个属性,这个属性指向函数A。而A的caller为null。

    callee在递归函数中的好处:

    正常定义斐波那契函数如下(例子引自于《javascript高级程序设计》第七章匿名函数7.1节-递归):

function factorial(num) {
    if (num < 1) {
        return 1;
    } else {
        return num * factorial(num - 1);
    }
}

    基于上述函数,如果存在如下写法:

var f = factorial;
factorial = null;
alert(f(4));

   将函数引用赋值给f,再将factorial赋值为null。这样在f(4)执行时,函数内部的factorial由于被赋值为null,将导致报错。而如下的写法,采用arguments.callee将避免这个问题:

function factorial(num) {
    if (num < 1) {
        return 1;
    } else {
        return num * arguments.callee(num - 1);
    }
}
   这里由于arguments.callee指向函数的入口地址,代替了函数名称,保证了递归函数的稳定性。


 

查看评论

透明位图

Ron GeryMicrosoft 网络开发技术小组摘要这篇文章讨论了在 Microsoft Windows 图形环境中用位图达到透明和屏蔽效果的几种方法,包括通过仿真和使用特殊的驱动器功能。包含其中...
  • ghj1976
  • ghj1976
  • 2000-11-21 10:07:00
  • 1934

caller和callee的区别

caller和callee的区别
  • laijieyao
  • laijieyao
  • 2015-02-02 09:51:29
  • 39218

js中的 caller与callee用法小实例

caller函数fun的calle返回调用fun的函数对象,即fun的执行环境,如果fun的执行环境为window则返回nullfunction fun(){ console.log(fun....
  • qq_17335153
  • qq_17335153
  • 2016-09-18 15:44:21
  • 1202

理解js中call,apply,caller,callee的区别

理解js中call,apply,caller,callee的区别 javascript中的call(),apply(),caller(),callee()方法作用都是调用某个函数或方法,概念...
  • huangchao1010
  • huangchao1010
  • 2016-11-08 01:54:24
  • 2512

js的caller和callee

caller返回一个函数的引用,这个函数调用了当前的函数;callee放回正在执行的函数本身的引用,它是arguments的一个属性,感兴趣的你可以参考下或许可以帮助到你 caller ...
  • yygg329405
  • yygg329405
  • 2015-03-01 21:56:25
  • 1758

轻松理解callee和caller

废话不多说 callee  官方解释: 返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文。 看不大懂? 看个例子就明白了。。。 function a(n){...
  • g125989100
  • g125989100
  • 2011-11-01 11:46:29
  • 241

callee和caller的作用与区别

递归 function factorial(x) { return x
  • hustzw07
  • hustzw07
  • 2017-05-16 17:12:34
  • 329

介绍call,callee,caller,apply的区别与应用

介绍call,callee,caller,apply的区别与应用
  • qq_30628821
  • qq_30628821
  • 2016-04-07 09:57:24
  • 514

vue-cli创建的项目中引入第三方库报错 'caller', 'calle', and 'arguments' properties may not be...

以在vue中引入mui第三方库为例: 虽然针对vue,有单独的vue-mui库可以使用,但因习惯了直接使用第三方库,且单独的mui更全面一点,所以想要作为第三方js库来引用。 问题: 在vue的m...
  • Sophie_U
  • Sophie_U
  • 2017-07-28 09:05:51
  • 1624

JavaScript arguments callee caller 学习笔记

arguments假设定义了一个函数a,函数a的实际参数只有一个x,如果调用这个函数a的时候传入两个实参,第一个实参可以根据参数名x来获得,也可以通过类数组对象arguments[0]来获取,而第二个...
  • u011884290
  • u011884290
  • 2016-07-08 11:59:02
  • 307
    个人资料
    等级:
    访问量: 0
    积分: 50
    排名: 0
    文章分类
    文章存档