`
huaxiafu
  • 浏览: 8416 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

caller和callee的区别介绍及演示结果

阅读更多
caller返回一个函数的引用,这个函数调用了当前的函数;callee放回正在执行的函数本身的引用,它是arguments的一个属性,感兴趣的你可以参考下或许可以帮助到你
 
 

Caller

caller返回一个函数的引用,这个函数调用了当前的函数。

使用这个属性要注意:

1 这个属性只有当函数在执行时才有用
2 如果在javascript程序中,函数是由顶层调用的,则返回null

functionName.caller: functionName是当前正在执行的函数。

复制代码代码如下:

var a = function() { 
alert(a.caller); 

var b = function() { 
a(); 

b();

上面的代码中,b调用了a,那么a.caller返回的是b的引用,结果如下:

 

如果直接调用a(即a在任何函数中被调用,也就是顶层调用),返回null:

复制代码代码如下:

var a = function() { 
alert(a.caller); 

var b = function() { 
a(); 

//b(); 
a();

输出结果:

 

callee

callee放回正在执行的函数本身的引用,它是arguments的一个属性

使用callee时要注意:

1 这个属性只有在函数执行时才有效
2 它有一个length属性,可以用来获得形参的个数,因此可以用来比较形参和实参个数是否一致,即比较arguments.length是否等于arguments.callee.length
3 它可以用来递归匿名函数。

复制代码代码如下:

var a = function() { 
alert(arguments.callee); 

var b = function() { 
a(); 

b();

a在b中被调用,但是它返回了a本身的引用,结果如下:

 

分享到:
评论

相关推荐

    理解JavaScript的caller callee call apply

    在给定的部分内容中,作者详细解释并演示了`arguments`、`caller`和`callee`的用法。例如,`ArgTest`函数展示了如何使用`arguments`对象来获取和检查传递给函数的参数数量和值。同时,通过`callerDemo`和`...

    javascript下arguments,caller,callee,call,apply示例及理解

    JavaScript中arguments、caller、callee、call和apply是与函数相关的几个重要概念和对象。它们为JavaScript的函数提供了非常灵活的功能,特别是在处理函数参数和调用上下文方面。接下来,将对这些概念逐一进行详细...

    javascript中arguments,callee,caller详解

    在代码示例中,作者通过创建一个简单的HTML页面和JavaScript脚本,展示了如何利用console.log()函数和instanceof操作符来判断arguments对象的类型,并且还演示了如何使用arguments.callee和child.caller来获取当前...

    js阻止冒泡及jquery阻止事件冒泡示例介绍.docx

    var e = arguments.callee.caller.arguments[0] || window.event; if (window.event) { e.returnValue = false; e.preventDefault(); } alert(3); if (window.event) { e.cancelBubble = true; } else { e...

    javascript获取函数名称、函数参数、对象属性名称的代码实例

    var caller = callee.caller, _caller = caller.toString().replace(/[\s\?]*/g,""); var last = _caller.indexOf(_callee), str = _caller.substring(last - 30, last); name = str.match(/var([^\=]+?)\=/); ...

    基于C++ module库 Protobuf Zookeeper实现的Rpc框架源码+项目说明.zip

    3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。在使用过程中,如有问题或建议,请及时沟通。 5.期待你能在...

    兼容各大浏览器的JavaScript阻止事件冒泡代码

    - `arguments.callee.caller.arguments[0]`的使用是为了在非IE浏览器中正确引用传递给当前函数的事件对象`event`。 #### 五、代码示例 文中还提供了一个使用上述`stopEvent`函数的HTML结构和事件绑定示例。 ```...

    x64_remotecall:在 x64 中执行远程调用

    项目中的源代码可能会演示如何使用x64特定的优化来提高远程调用的效率,或者如何处理x64架构下的内存对齐和指针转换问题。 通过深入研究x64_remotecall-master这个压缩包中的源代码和文档,开发者可以学习到如何在...

    jquery实现按Enter键触发事件示例

    var e = event || window.event || arguments.callee.caller.arguments[0]; // 检查按下的键是否为Enter键(键码为13) if (e && e.keyCode == 13) { // 在这里写你的功能代码 // 例如,提交表单 $('form')....

Global site tag (gtag.js) - Google Analytics