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


Posted in Javascript onMarch 10, 2013

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的引用,结果如下:

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

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

var a = function() { 
alert(a.caller); 
} 
var b = function() { 
a(); 
} 
//b(); 
a();

输出结果:

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

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本身的引用,结果如下:

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

Javascript 相关文章推荐
jQuery基本过滤选择器使用介绍
Apr 18 Javascript
JS实现鼠标箭头变成一个燃烧烛光效果的方法
Feb 28 Javascript
JS+CSS实现精美的二级导航效果代码
Sep 17 Javascript
jquery实现简洁文件上传表单样式
Nov 02 Javascript
Bootstrap项目实战之首页内容介绍(全)
Apr 25 Javascript
Angular.JS判断复选框checkbox是否选中并实时显示
Nov 30 Javascript
微信小程序开发之圆形菜单 仿建行圆形菜单实例
Dec 12 Javascript
将jquery.qqFace.js表情转换成微信的字符码
Dec 01 jQuery
详解layui弹窗父子窗口之间传参数的方法
Jan 16 Javascript
在vue2.0中引用element-ui组件库的方法
Jun 21 Javascript
小程序websocket心跳库(websocket-heartbeat-miniprogram)
Feb 23 Javascript
浅谈JavaScript中的“!!”作用
Aug 03 Javascript
JavaScript表达式:URL 协议介绍
Mar 10 #Javascript
javascript中的void运算符语法及使用介绍
Mar 10 #Javascript
jquery获取table中的某行全部td的内容方法
Mar 08 #Javascript
通过上下左右键和回车键切换光标实现代码
Mar 08 #Javascript
jquery怎样实现ajax联动框(二)
Mar 08 #Javascript
jquery怎样实现ajax联动框(一)
Mar 08 #Javascript
实现点击列表弹出列表索引的两种方式
Mar 08 #Javascript
You might like
文件上传程序的全部源码
2006/10/09 PHP
php中header设置常见文件类型的content-type
2015/06/23 PHP
可以显示单图片,多图片ajax请求的ThickBox3.1类下载
2007/12/23 Javascript
javascript 数组排序函数
2009/08/20 Javascript
jquery 仿QQ校友的DIV模拟窗口效果源码
2010/03/24 Javascript
Json对象与Json字符串互转(4种转换方式)
2013/03/27 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
2015/09/26 Javascript
解决jquery插件:TypeError:$.browser is undefined报错的方法
2015/11/21 Javascript
快速学习AngularJs HTTP响应拦截器
2015/12/31 Javascript
jquery单击事件和双击事件冲突解决方案
2016/03/02 Javascript
AngularJS  ng-table插件设置排序
2016/09/21 Javascript
学习 NodeJS 第八天:Socket 通讯实例
2016/12/21 NodeJs
JS Select下拉框(支持输入模糊查询)
2017/02/04 Javascript
AngularJS路由切换实现方法分析
2017/03/17 Javascript
vuejs 切换导航条高亮(路由菜单高亮)的方法示例
2018/05/29 Javascript
layui radio点击事件实现input显示和隐藏的例子
2019/09/02 Javascript
vue实现数据控制视图的原理解析
2020/01/07 Javascript
js实现无缝轮播图
2020/03/09 Javascript
React生命周期原理与用法踩坑笔记
2020/04/28 Javascript
js对象属性名驼峰式转下划线的实例代码
2020/09/17 Javascript
[01:04:14]OG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
pygame 精灵的行走及二段跳的实现方法(必看篇)
2017/07/10 Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
2018/01/02 Python
Django中数据库的数据关系:一对一,一对多,多对多
2018/10/21 Python
python多线程调用exit无法退出的解决方法
2019/02/18 Python
python在不同条件下的输入与输出
2020/02/13 Python
Python模拟伯努利试验和二项分布代码实例
2020/05/27 Python
如何通过命令行进入python
2020/07/06 Python
Python如何定义接口和抽象类
2020/07/28 Python
REISS英国官网:伦敦High Street最受欢迎品牌
2016/12/21 全球购物
英国Office鞋店德国网站:在线购买鞋子、靴子和运动鞋
2018/12/19 全球购物
List, Set, Map是否继承自Collection接口?
2016/05/16 面试题
2014年社区学雷锋活动总结
2014/03/09 职场文书
房屋租赁合同协议书范本
2014/10/19 职场文书
第一节英语课开场白
2015/06/01 职场文书
mysql字符串截取函数小结
2021/04/05 MySQL