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