先從英語的角度來看看這兩個詞。callee是“被調用者,被調用函數”的意思;caller是“訪客、調用方”的意思。
其實JavaScript裡也正如此意,通俗點講就是:callee是你在調用哪個函數;caller是哪個函數在調用你。
舉個例子大家就明白了:
1. callee
1 (function b(){
2 alert(arguments.callee);
3 })();
arguments.callee就是問參數在調用哪個函數,該參數就在b函數中,所以alert出來的肯定就是b函數本身了。
2. caller
1 (function a(){
2 b();
3 })();
4
5 function b(){
6 alert(b.caller);
7 };
alert(b.caller)是指哪個函數在調用b函數,顯然是a函數。那麼alert出來應該是a函數本身。
那麼這個時候再來理解概念:
callee是返回正在被執行的function函數,也就是所指定的function對象的正文。
caller是返回一個對函數的引用,該函數調用了當前函數;