星空网 > 软件开发 > Java

javascript中caller和callee

最近学习javascript,碰到caller和callee的问题,去网上百度了很多。搜到的内容大同小益,整理总结了一下与大家分享。

caller:返回一个对调用function函数的函数的引用(用法:function.caller)

说明:对于函数来说,caller属性只有在函数执行时才有定义。如果函数由顶层调用,caller则为null。

var time = 3 //控制次数,去掉会一直在caller与handleCaller交替不断执行function caller() {  caller.caller()//返回调用caller函数的函数引用}function handleCaller() {  if (time > 0){    time--    alert(handleCaller.caller)//返回调用handleCaller函数的函数引用    alert(caller.caller)//返回调用caller函数的函数引用    caller()  }}handleCaller()

例子分析:第一次handleCaller运行的时候,两个alert返回的都是null,alert(handleCaller.caller)返回null是因为它是由顶层调用, alert(caller.caller)返回null是因为caller的默认值是null。接下去caller()函数被调用,caller.caller返回的是调用它的函数(handleCaller)的引用,通过caller.caller()可以再次调用handleCaller函数。第二次handleCaller运行的时候,alert(handleCaller.caller)返回的是caller代码(其实就是caller的引用),alert(caller.caller)返回的是handleCaller代码。因为函数之间的调用关系是handleCaller->caller->handleCaller。之后就不断在2个函数之间交替执行。

callee:返回相对应的arguments的函数引用。(多用于匿名函数递归)

说明:也许你在网上看到最多的是callee返回正在执行的函数引用。我是这么理解,每个函数都有一个自己的arguments,通常是用来存放参数的。arguments有一个callee 属性,初始值就是对应自身的函数引用。当你函数执行到该语句时,arguments是默认对应的是你现在执行的函数,那么arguments.callee为当前正在执行的函数的引用。当然如果你有标记过其他函数的arguments(例子中的args),自然可以用args.callee()去再次调用那个函数。

function a(){  alert(arguments.callee)  var args = arguments  function c(){    alert(arguments.callee)    args.callee()  }  c()}a()

例子分析:例子中的arguments.callee都是默认返回当前正在执行的函数的引用(a中返回a自身函数引用,c中返回c自身函数引用),而通过用args存放a函数的arguments,在内置函数c中使用args.callee()再次调用a函数。

 




原标题:javascript中caller和callee

关键词:JavaScript

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

全面介绍国际商标申请的步骤与方式:https://www.kjdsnews.com/a/1379831.html
全面介绍国际商标注册证书申请流程:https://www.kjdsnews.com/a/1379832.html
全面介绍国际商标注册的步骤和方法:https://www.kjdsnews.com/a/1379833.html
全面介绍国际商标注册的步骤与方法:https://www.kjdsnews.com/a/1379834.html
全面介绍国际商标注册的代办流程:https://www.kjdsnews.com/a/1379835.html
全面介绍国际商标注册登记流程:https://www.kjdsnews.com/a/1379836.html
2024.03.29亚马逊选品推荐(仅供参考):宠物饮水机滤芯片:https://www.kjdsnews.com/a/1836532.html
想要搞钱,就去做离搞钱最近的事:https://www.kjdsnews.com/a/1836533.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流