caller和callee的區別

2021-07-31 20:47:15 字數 848 閱讀 7165

caller返回乙個函式的引用,這個函式呼叫了當前的函式;callee放回正在執行的函式本身的引用,它是arguments的乙個屬性

functionname.caller : functionname是當前執行的函式
caller返回乙個函式的引用,這個函式呼叫了當前的函式(呼叫函式)

注意:

1. 此屬性僅當函式執行時有效

2. 如果程式中函式由頂層呼叫,返回null

var a = function

() var b = function

() b(); // function()

a(); // null

上面的**中,b呼叫了a,那麼a.caller返回的是b的引用

如果直接呼叫a(即a在任何函式中被呼叫,也就是頂層呼叫),返回null:

callee返回正在執行的函式本身的引用,它是arguments的乙個屬性

注意:

1. 該屬性只在函式執行時有效

2. 它有乙個length屬性,可獲得形參個數,因此可用來比較形參(arguments.callee.length)和實參(arguments.length)個數是否一致

3. 它可用來遞迴匿名函式

var a = function() 

var b = function()

b();//function()

a();//function

()

a在b中被呼叫,但是它返回了a本身的引用

函式的callee和caller

callee是函式的arguments這個特殊物件的乙個屬性,它會指向這個arguments物件的函式 function fn1 fn1 callee的可以消除函式內部呼叫自己的耦合性,var num 3 function fn1 num else 可以使用callee function fn1 n...

call與caller與callee的區別

function fn a,b fn 1,2 this指向window fn.call 10,20 修改後this指向這個物件 caller 獲取呼叫這個函式的引用 我被誰呼叫了 如果函式b中呼叫函式a 那麼函式a的caller就是函式b 如果是全域性呼叫 window呼叫 那麼函式的caller就...

Js中caller和callee的區別

1 caller 返回乙個呼叫當前函式的引用 如果是由頂層呼叫的話 則返回null 舉個栗子哈 caller給你打 的人 誰給你打 了 誰呼叫了你 很顯然是下面a函式的執行 只有在打 的時候你才能知道打 的人是誰 所以對於函式來說 只有caller在函式執行的時候才存在 var callertest...