callee與caller的區別簡單介紹

antzone發表於2017-04-06

對於外表比較相似的東西,我們通常比較關注他們的區別是什麼。

標題中的兩個東西外表就比較相似,下面就來介紹一下它們的區別有哪些。

一.callee屬性:

此屬性屬於arguments物件,也就是說使用的時候要用如下形式:

[JavaScript] 純文字檢視 複製程式碼
arguments.callee

它指向的是arguments所屬的函式。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼
function func(num){
  if (num<=1) {
    return 1;
  }
  else{
    return num*arguments.callee(num-1);
  };
};
console.log(func(5));

上面的通過arguments.callee實現了遞迴效果。

二.caller屬性:

此屬性屬於一個函式物件,它指向當前函式所屬於的直接父函式,也可以說呼叫當前函式的函式。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼
function father(){
  children();
};
function children(){
  console.log(children.caller);
};
father();

上面簡單介紹了兩個屬性的基本用法,當然區別也就看出來了。

更多內容可以參閱arguments.callee和caller的用法一章節。

相關文章