1. 程式人生 > >Js中caller和callee的區別

Js中caller和callee的區別

存在 ons var nbsp fun 區別 test 函數對象 返回

1 :caller 返回一個調用當前函數的引用 如果是由頂層調用的話 則返回null

(舉個栗子哈 caller給你打電話的人 誰給你打電話了 誰調用了你 很顯然是下面a函數的執行 只有在打電話的時候你才能知道打電話的人是誰 所以對於函數來說 只有caller在函數執行的時候才存在)

var callerTest = function() {

console.log(callerTest.caller) ;

} ;

function a() {

callerTest() ;

}

a() ;//輸出function a() {callerTest();}

callerTest() ;//輸出null

2 :callee 返回一個正在被執行函數的引用 (這裏常用來遞歸匿名函數本身 但是在嚴格模式下不可行)

callee是arguments對象的一個成員 表示對函數對象本身的引用 它有個length屬性(代表形參的長度)

var c = function(x,y) {

console.log(arguments.length,arguments.callee.length,arguments.callee)

} ;

c(1,2,3) ;//輸出3 2 function(x,y) {console.log(arguments.length,arguments.callee.length,arguments.callee)}

Js中caller和callee的區別