关于javascript:caller和callee的区别

caller

caller是函数的属性,返回一个函数的援用,这个函数调用了以后的函数。

特点

1 这个属性只有当函数在执行时才有用
2 如果在javascript程序中,函数是由顶层调用的,则返回null
var a = function() { 
alert(a.caller); 
} 
var b = function() { 
a(); 
} 
b();

下面的代码中,b调用了a,那么a.caller返回的是b的援用


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

a在顶层调用,所以输入后果:null

callee

callee放回正在执行的函数自身的援用,它是arguments的一个属性

特单

1 这个属性只有在函数执行时才无效
2 它有一个length属性,能够用来取得形参的个数,因而能够用来比拟形参和实参个数是否统一,即比拟arguments.length是否等于arguments.callee.length
3 它能够用来递归匿名函数。
var a = function() { 
alert(arguments.callee); 
} 
var b = function() { 
a(); 
} 
b();

a在b中被调用,然而它返回了a自身的援用

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理