javascript中caller和callee区别以及使用场景

javascript中caller和callee区别以及使用场景英文翻译 caller nbsp n 访客 通信 呼叫者 打电话者 召集员 calleen 被召者 caller 理解为指的是调用当前函数的函数 也就是调用者 如果没有其他函数调用的话就是 null 举个栗子如果 callerTest 是直接执行的函数 那么 callerTest caller null 如果 test 去调用 callerTest 那么 callerTest caller test 具

英文翻译

caller 

n. 访客;[通信] 呼叫者;打电话者;召集员

  • callee
    • n. 被召者


caller

理解为指的是调用当前函数的函数,也就是调用者,如果没有其他函数调用的话就是null,举个栗子如果callerTest()是直接执行的函数,那么callerTest.caller===null,如果test()去调用callerTest(),那么callerTest.caller===test,具体可以看看下面这段代码

function callerTest(){ console.log(callerTest.caller); } function test(){ callerTest(); } test();//test callerTest();//null

callee

可以理解为当前执行的函数即被调用的函数,也就是被调用者,举个栗子如果calleeTest为当前执行的函数,那么arguments.callee===calleeTest,因此也就有了callee的一个应用,可以用于递归调用,虽然可以直接写为calleeTest,但是这样显然耦合度比较高,不利于代码维护,而如果写成arguments.callee的话就可以降低耦合度

代码

function calleeTest(){ console.log(calleeTest===arguments.callee); } function test(){ calleeTest(); } test();//true calleeTest();//true



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232510.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 单射、双射、满射

    单射、双射、满射映射就是说对于集合X里的每一个元素x,按法则f,在集合Y里都有唯一的y与之对应,那么称f为从集合X到集合Y的映射。记作f:X->Y。映射基本要求是1.对于X中的每一个x,都有对应的y,还有2.一个x,只能有一个唯一的y与之对应。按照其他限制条件不同,可分为以下3种:单射:满足,对于不同的x,经过映射后的y不同。即当x1!=x2,f(x1)!==f(x2)。满足单射的映射可以不满足满射,例如,我们将一个满足单射的映射f的值域放大,此时有y没有x与之对应。满射:满足,Y集

    2022年6月10日
    108
  • 内核编译错误的解决方案

    内核编译错误的解决方案

    2021年9月5日
    57
  • 互联网裁员为什么专捡大于35的裁?

    互联网裁员为什么专捡大于35的裁?以前写过一篇文章《在中国程序员是青春饭吗?》,一时间,各个平台都成为爆文,在这篇文章中,详细讲解了程序员的青春饭问题,并且给出了具体地五个出路。第一条出路,说的是需要走技术专家路线。有些小伙伴就有疑问了,我年龄大了,我技术菜,就我不能降薪去小公司吗?就着这两年各个大厂对高龄程序员的种种限制,我们再来谈一谈,为什么我建议大家如果要走技术路线,就一定要进中大厂走技术专家的路线。记得帮我点赞哦。一、大厂裁员,为什么优先35岁以上?大道理总是无力的,先讲几个事实吧。为了避免不必要的.

    2022年7月17日
    18
  • layoutSubviews和drawRect

    layoutSubviews和drawRectLayoutSubviews    子类可以重写此方法,因为需要更精确执行他们子视图的布局。只有当autoresizing和基于约束的行为的子视图不提供你想要的行为,应重写此方法。该方法不应直接调用。如果你想要强制布局更新,下一次绘图更新之前 应当反向调用setNeedsLayout方法,如果您想要立即更新您的视图的布局,请调用layoutIfNeeded方法。

    2022年7月15日
    16
  • thread继承Runnable吗_不能完全和完全不能的区别

    thread继承Runnable吗_不能完全和完全不能的区别  在实际工作中,我们很可能习惯性地选择Runnable或Thread之一直接使用,根本没在意二者的区别,但在面试中很多自以为是的菜货面试官会经常而且非常严肃的问出:请你解释下Runnable或Thread的区别?尤其是新手就容易上当,不知如何回答,就胡乱编一通。鄙人今天告诉你们这二者本身就没有本质区别,就是接口和类的区别。问出这个问题的面试官本身就是个二流子!如果非要说区别,请看如下:Run…

    2025年8月24日
    3
  • Centos安装mysql rpm包

    Centos安装mysql rpm包Centos安装mysqlrpm包安装mysql步骤:清理环境centos有可能会自带一个mariadb查看是否已安装rpm-qa|grep-imysql#(centos7默认系统自带的)rpm-qa|grep-imariadb#rpm-e加上包名,把mariadb包清掉rpm-e–nodepsXXXX可以看到用rpm删除会失败,提示有依赖关系的软件需要安装rpm删除时如果有依赖关系,可以用yumremove+包名来删除mariadb开始安装:

    2022年6月26日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号