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)}