在JavaScript中,arguments.callee是一個指向當前執行的函數的引用。
arguments是一個類數組對象,它包含傳遞給函數的所有參數。callee是arguments對象的一個屬性,它指向當前正在執行的函數本身。
arguments.callee可以用于遞歸調用匿名函數。例如:
var factorial = function(n) {
if (n === 0) {
return 1;
} else {
return n * arguments.callee(n - 1);
}
};
console.log(factorial(5)); // 輸出 120
在上面的例子中,使用arguments.callee實現了一個遞歸調用的階乘函數。函數在每一次調用時自身作為參數傳遞給arguments.callee,直到n為0時停止遞歸。
需要注意的是,嚴格模式下禁止使用arguments.callee。在嚴格模式下,使用arguments.callee會拋出一個錯誤。因此,如果需要遞歸調用函數,最好將函數命名,然后直接使用函數名進行遞歸調用。例如:
var factorial = function calculate(n) {
if (n === 0) {
return 1;
} else {
return n * calculate(n - 1);
}
};
console.log(factorial(5)); // 輸出 120