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 相关文章推荐
json2.js的初步学习与了解
Oct 06 Javascript
禁止选中文字兼容IE、Chrome、FF等
Sep 04 Javascript
浅谈jquery事件处理
Apr 24 Javascript
javascript单例模式的简单实现方法
Jul 25 Javascript
JavaScript兼容浏览器FF/IE技巧
Aug 14 Javascript
Bootstrap分页插件之Bootstrap Paginator实例详解
Oct 15 Javascript
three.js实现3D模型展示的示例代码
Dec 31 Javascript
基于bootstrap页面渲染的问题解决方法
Aug 09 Javascript
js实现动态添加上传文件页面
Oct 22 Javascript
详解vue-cli@2.x项目迁移日志
Jun 06 Javascript
微信小程序实现原生步骤条
Jul 25 Javascript
Node.js API详解之 module模块用法实例分析
May 13 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
用php+javascript实现二级级联菜单的制作
2008/05/06 PHP
PHP实现在线阅读PDF文件的方法
2015/06/17 PHP
javascript对象之内置对象Math使用方法
2010/04/16 Javascript
jquery获取input的value问题说明
2010/08/19 Javascript
jquery等宽输出文字插件使用介绍
2013/09/18 Javascript
CSS3,HTML5和jQuery搜索框集锦
2014/12/02 Javascript
jQuery检测返回值的数据类型
2015/07/13 Javascript
JavaScript中Array的实用操作技巧分享
2016/09/11 Javascript
Javascript的动态增加类的实现方法
2016/10/20 Javascript
JavaScript浏览器对象模型BOM(BrowserObjectModel)实例详解
2016/11/29 Javascript
JavaScript 实现 Tab 点击切换实例代码
2017/03/25 Javascript
基于jQuery实现的Ajax 验证用户名唯一性实例代码
2017/06/28 jQuery
js实现多张图片延迟加载效果
2017/07/17 Javascript
ES6中字符串string常用的新增方法小结
2017/11/07 Javascript
前后端如何实现登录token拦截校验详解
2018/09/03 Javascript
vue 循环加载数据并获取第一条记录的方法
2018/09/26 Javascript
如何解决.vue文件url引用文件的问题
2019/01/18 Javascript
JS Generator 函数的含义与用法实例总结
2020/04/08 Javascript
在vue中使用echarts(折线图的demo,markline用法)
2020/07/20 Javascript
利用React高阶组件实现一个面包屑导航的示例
2020/08/23 Javascript
Openlayers测量距离与面积的实现方法
2020/09/25 Javascript
Python实现的破解字符串找茬游戏算法示例
2017/09/25 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
2018/10/11 Python
在Python中合并字典模块ChainMap的隐藏坑【推荐】
2019/06/27 Python
一行python实现树形结构的方法
2019/08/09 Python
Python使用多进程运行含有任意个参数的函数
2020/05/02 Python
python3通过qq邮箱发送邮件以及附件
2020/05/20 Python
Python decimal模块使用方法详解
2020/06/08 Python
CSS3,线性渐变(linear-gradient)的使用总结
2017/01/09 HTML / CSS
html5 兼容IE6结构的实现代码
2012/05/14 HTML / CSS
意大利珠宝店:Luxury Zone
2019/01/05 全球购物
一套比较完整的软件测试人员面试题
2012/05/13 面试题
建筑班组长岗位职责
2014/01/02 职场文书
社区活动邀请函范文
2014/01/29 职场文书
网络工程师自荐书范文
2014/04/01 职场文书
类和原型的设计模式之复制与委托差异
2022/07/07 Javascript