函数的callee和caller的区别和用处
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
是什么?
指向他的执行者
- 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的区别和用处相关推荐
- [js] callee和caller的区别和作用是什么?
[js] callee和caller的区别和作用是什么? arguments.callee 指的是当前函数 Function.caller 指的是调用当前函数的函数 举个例子:function a() ...
- java caller_JavaScript中callee和caller的区别与用法实例分析
本文实例讲述了JavaScript中callee和caller的区别与用法.分享给大家供大家参考,具体如下: 1.callee 在函数的内部,有两个特殊的对象:arguments和this.其中arg ...
- callee与caller的区别
Javascript arguments.callee和caller的区别 一.callee 在学习callee之前,需要先学习arguments. arguments: 含义:该对象代表正在执行的函 ...
- arguments.callee和caller的区别
arguments.callee和caller的区别 1.arguments arguments 是一个对应于传递给函数的参数的类数组对象. 白话就是这是一个函数的传参的集合,不是数组,但是是一个类数 ...
- callee和caller的区别和用法
先来一个通俗易懂的简单描述: 简单一点来说caller是指向调用当前函数的函数,比如b函数调用a函数,那么a.caller则是b的引用:callee是arguments的一个属性,指向其函数自身,比如 ...
- js函数的内部属性---arguments,callee,caller
在接下来的几篇文章中,我大家谈谈函数的内部属性,arguments,callee,caller (1)arguments,是一个类数组对象,其中包含了传入函数的所有参数,主要用途是,保存函数的参数: ...
- callee、caller、call、apply、bind这些方法的含义和使用
在学校时间比较充裕,所以利用这段时间好好回顾下了js的基础.这回说下这五个函数属性方法,它们分别是:callee.caller.call.apply.bind 这5个方法在刚学js的时候一直理解不透, ...
- ES5-13 对象属性遍历、this、callee、caller
链式调用 在每个函数内部return this 访问对象属性 点语法 []中括号内是字符串或是变量 数组是特殊的对象 对象属性遍历 for in(遍历对象或数组) - 不必再用Object.keys那 ...
- Javascript 中 callee 和 caller
1.arguments.callee 返回正在执行的函数本身的引用,是arguments的一个属性. 当函数的名称未知时,例如匿名函数,使用callee很有用 用来代替函数名,降低耦合性 注: 这个属 ...
最新文章
- Docker 容器技术 — Swarm 集群
- VMware 虚拟化编程(3) —VMware vSphere Web Service API 解析
- .NET程序在Linux容器中的演变
- 高级数据结构---并查集
- 这个世界是那样的似曾相识
- datax 定时执行多个job_数据同步神器Datax源码重构
- Anylogic学习--------选项列表
- 常用视频格式与视频编解码标准介绍
- dell 1520 win7 x64 触摸板驱动 synaptics touchpad 16.2.10.3
- 影驰名人堂送的机器人_6999元纯白信仰!影驰GTX 1080 Ti HOF名人堂评测
- 运算放大器---输入偏置电流(IB)
- 提高Interface Builder高效工作的8个技巧
- 团队如何提高执行力,总结以下几点:
- 系统设计师之路·第三节·一花一世界,一叶一菩提——无处不在的设计思想
- 华为m40怎么升级鸿蒙,华为再亮剑,这四款手机将支持升级鸿蒙系统,网友:够给力!...
- 你想拥有一台可以水下通话的手机吗?
- php代码出现notice,PHP提示Notice: Undefined variable的解决办法
- JS的DOM操作1--获取元素与修改元素(附带动图案例)
- 数组——洛谷#P1567 统计天数(Python实现)
- 在matlab中,利用for循环来生成一个矩阵,并分别对该矩阵的行和列进行求和