JS arguments.callee屬性:獲取當前所在的函數

2020-07-16 10:05:03
JS arguments 物件有一個 callee 屬性,它參照當前 arguments 物件所在的函數。使用該屬性可以在函數體內呼叫函數自身。在匿名函數中,callee 屬性比較有用。例如,利用它可以設計遞回呼叫。

範例

在下面範例中,使用 arguments.callee 獲取匿名函數,然後通過函數的 length 屬性獲取函數形參個數,最後比較實參個數與形參個數,以檢測使用者傳遞的引數是否符合要求。
function f(x,y,z) {
    var a = arguments.length();  //獲取函數實參的個數
    var b = arguments.callee.length;  //獲取函數形參的個數
    if (a != b_ {  //如果實參和形參個數不相等,則提示錯誤資訊
        throw new Error("傳遞的引數不匹配");
    }else {  //如果實參和形參個數相同,則返回它們的和
        return x + y + z; 
    }
}
console.log(f(3,4,5));  //返回值12
arguments.callee 等價於函數名,在上面範例中,arguments.callee 等於 f。