callee是函數的arguments這個特殊對象的一個屬性,它會指向這個arguments對象的函數:函數
function fn1(){ console.log(arguments.callee); //輸出函數fn1自己 } fn1()
var num = 3 function fn1(num){ if(num <= 1){ return 1 }else{ return num * fn1(num-1) } } //可使用callee function fn1(num){ if(num <= 1){ return 1 }else{ return num * arguments.callee(num-1) } }
還可使用callee查看形參與實參的個數差異spa
function fn2(a,b,c){ console.log('實參數:',arguments.length); //2 console.log('行參數:',arguments.callee.length); //3 } fn2(1,2)
function fn1(){ console.log(fn1.caller); //fn1的caller屬性指的是函數fn2 console.log(arguments,callee.caller) //同上,使用arguments的callee屬性,指的是當前函數,當前函數的caller屬性,指的是其調用者,也就是函數fn2 } function fn2(){ } fn2()