1. callee \ arguements.callee

是什么?

就是一个指针 可以指向函数本身

1.每个函数都存在一个arguements的对象 尔callee存在于arguements
callee是arguements arguements的属性
callee的使用需要在函数内部进行访问

function fn(){}dir(fn)arguments: nullcaller: nulllength: 0name: "fn"prototype: {constructor: ƒ}[[FunctionLocation]]: VM96:1[[Prototype]]: ƒ ()[[Scopes]]: Scopes[1]
 function  add(a) {if (a==1) return 1;return a*arguments.callee(a-1);//此时可以访问到 //arguments.callee  就等同于自身函数add}

2.caller

是什么?

指向他的执行者

  1. caller属于函数的一个属性
 function a(){console.log(a.caller)//此时的a.caller 指向b  因为他在b函数运行}function b(){a()}

3.callee用处

1.递归

 function  add(a) {console.log(add.caller)if (a==1) return 1;return a*add(a-1);}//如果 你把函数赋值给了 别的变量var other=add;add=nullother(2)//将会报错  因为return a*add(a-1);时候  add不再是函数function  add(a) {console.log(add.caller)if (a==1) return 1;return a*arguments.callee(a-1);}//如果 你把函数赋值给了 别的变量var other=add;add=nullother(2)//正常  因为return a*arguments.callee(a-1);//时候  arguments.callee将会指向otherlet a=(function as() {if (a==1) return 1;return a*as(a-1);})//因为严格模式 不支持arguement  所以可以用以上的方式替代 完成递归

函数的callee和caller的区别和用处相关推荐

  1. [js] callee和caller的区别和作用是什么?

    [js] callee和caller的区别和作用是什么? arguments.callee 指的是当前函数 Function.caller 指的是调用当前函数的函数 举个例子:function a() ...

  2. java caller_JavaScript中callee和caller的区别与用法实例分析

    本文实例讲述了JavaScript中callee和caller的区别与用法.分享给大家供大家参考,具体如下: 1.callee 在函数的内部,有两个特殊的对象:arguments和this.其中arg ...

  3. callee与caller的区别

    Javascript arguments.callee和caller的区别 一.callee 在学习callee之前,需要先学习arguments. arguments: 含义:该对象代表正在执行的函 ...

  4. arguments.callee和caller的区别

    arguments.callee和caller的区别 1.arguments arguments 是一个对应于传递给函数的参数的类数组对象. 白话就是这是一个函数的传参的集合,不是数组,但是是一个类数 ...

  5. callee和caller的区别和用法

    先来一个通俗易懂的简单描述: 简单一点来说caller是指向调用当前函数的函数,比如b函数调用a函数,那么a.caller则是b的引用:callee是arguments的一个属性,指向其函数自身,比如 ...

  6. js函数的内部属性---arguments,callee,caller

    在接下来的几篇文章中,我大家谈谈函数的内部属性,arguments,callee,caller (1)arguments,是一个类数组对象,其中包含了传入函数的所有参数,主要用途是,保存函数的参数: ...

  7. callee、caller、call、apply、bind这些方法的含义和使用

    在学校时间比较充裕,所以利用这段时间好好回顾下了js的基础.这回说下这五个函数属性方法,它们分别是:callee.caller.call.apply.bind 这5个方法在刚学js的时候一直理解不透, ...

  8. ES5-13 对象属性遍历、this、callee、caller

    链式调用 在每个函数内部return this 访问对象属性 点语法 []中括号内是字符串或是变量 数组是特殊的对象 对象属性遍历 for in(遍历对象或数组) - 不必再用Object.keys那 ...

  9. Javascript 中 callee 和 caller

    1.arguments.callee 返回正在执行的函数本身的引用,是arguments的一个属性. 当函数的名称未知时,例如匿名函数,使用callee很有用 用来代替函数名,降低耦合性 注: 这个属 ...

最新文章

  1. Docker 容器技术 — Swarm 集群
  2. VMware 虚拟化编程(3) —VMware vSphere Web Service API 解析
  3. .NET程序在Linux容器中的演变
  4. 高级数据结构---并查集
  5. 这个世界是那样的似曾相识
  6. datax 定时执行多个job_数据同步神器Datax源码重构
  7. Anylogic学习--------选项列表
  8. 常用视频格式与视频编解码标准介绍
  9. dell 1520 win7 x64 触摸板驱动 synaptics touchpad 16.2.10.3
  10. 影驰名人堂送的机器人_6999元纯白信仰!影驰GTX 1080 Ti HOF名人堂评测
  11. 运算放大器---输入偏置电流(IB)
  12. 提高Interface Builder高效工作的8个技巧
  13. 团队如何提高执行力,总结以下几点:
  14. 系统设计师之路·第三节·一花一世界,一叶一菩提——无处不在的设计思想
  15. 华为m40怎么升级鸿蒙,华为再亮剑,这四款手机将支持升级鸿蒙系统,网友:够给力!...
  16. 你想拥有一台可以水下通话的手机吗?
  17. php代码出现notice,PHP提示Notice: Undefined variable的解决办法
  18. JS的DOM操作1--获取元素与修改元素(附带动图案例)
  19. 数组——洛谷#P1567 统计天数(Python实现)
  20. 在matlab中,利用for循环来生成一个矩阵,并分别对该矩阵的行和列进行求和

热门文章

  1. 【Steam VR 2.0】3. Skeleton Poser 自定义抓取手势的使用
  2. mysql语句优化总结(一)
  3. 欺骗的艺术——第二部分(11)
  4. Python 1. 如何选择python版本,以及如何选择开发环境(IDE)
  5. 软件质量评判标准:高内聚、低耦合
  6. jquery 自动表单赋值
  7. 直方图处理(规定化)
  8. 直接法-穷举、递推和迭代
  9. 深入理解布局约束 | 开发者说·DTalk
  10. Matlab散点图进阶——矩阵气泡图