javaScript中callee与caller的作用及区别?
标签:
JavaScript
1、caller是javascript函数类型的一个属性,它引用调用当前函数的函数
function func() { alert(func.caller); }function func1() { func(); } func1();
比如上面的代码, 因为func函数是func1函数调用的, 所以func函数中对caller的引用就是func1函数。如果func函数直接在顶层的javascript环境中被调用,那么caller将返回null。
2 :callee 返回一个正在被执行函数的引用 (这里常用来递归匿名函数本身 但是在严格模式下不可行)
callee是arguments对象的一个成员 表示对函数对象本身的引用 它有个length属性(代表形参的长度)
function func() { alert(arguments.callee); }
它引用的是函数自身,在上面的代码中,arguments.callee引用的就是func函数本身。既然他引用的是函数本身,那么似乎显得有点多余,当我们需要在函数体内使用函数本身时,直接通过函数名调用就可以了,干嘛还要多此一举的通过arguments.callee这样去调用。然而我觉得callee存在的意义可能是想解耦函数本身对函数名称的依赖吧, 比如说在递归的环境下,函数内部通常还要调用函数本身, 而调用函数本身就免不了硬编码函数名称, 如果函数名称有变化, 那么函数中的代码也需要修改,使用callee就可以避免此类情况。
参考自:https://www.jianshu.com/p/8cef8d96fd03
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦