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。