次のような変数で再帰関数を作成できます。
/* Count down to 0 recursively.
*/
var functionHolder = function (counter) {
output(counter);
if (counter > 0) {
functionHolder(counter-1);
}
}
これで、functionHolder(3);
を出力します3
2
1
0
。私が次のことをしたとしましょう:
var copyFunction = functionHolder;
copyFunction(3);
上記のように出力3
2
1
0
されます。その後、次のように変更functionHolder
した場合:
functionHolder = function(whatever) {
output("Stop counting!");
次に、期待どおりに、functionHolder(3);
を与えStop counting!
ます。
copyFunction(3);
これで、関数(それ自体が指す)ではなく、3
Stop counting!
参照するとおりになります。functionHolder
これは状況によっては望ましい場合がありますが、関数を保持する変数ではなく、それ自体を呼び出すように関数を作成する方法はありますか?
つまり、電話をかけたときにこれらすべての手順を実行しても得られるように、回線のみを変更することは可能ですか?試しましたが、エラーが発生します。functionHolder(counter-1);
3
2
1
0
copyFunction(3);
this(counter-1);
this is not a function