arguments.callee の使い方

JavaScriptのarguments.calleeは現在実行されている関数の参照です。

argumentsは、その関数に渡されるすべてのパラメータを含む、配列に似たオブジェクトです。calleeは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 になるまで再帰を継続します。

引数.calleeは何らかの方法で厳格モードでは許可されていません。厳格モードで引数.calleeが使用されるとエラーが発生します。その為、再帰的に関数を呼び出す必要があるならば、関数の名前を付けて、直接関数名で再帰的に呼び出すべきです。例えば

var factorial = function calculate(n) {
if (n === 0) {
return 1;
} else {
return n * calculate(n - 1);
}
};
console.log(factorial(5)); // 输出 120
bannerAds