Bunun gibi bir değişkende özyinelemeli bir işlev oluşturabilirim:
/* Count down to 0 recursively.
*/
var functionHolder = function (counter) {
output(counter);
if (counter > 0) {
functionHolder(counter-1);
}
}
Bununla functionHolder(3);çıktı olur 3 2 1 0. Diyelim ki aşağıdakileri yaptım:
var copyFunction = functionHolder;
copyFunction(3);3 2 1 0yukarıdaki gibi çıktı . Daha sonra functionHolderaşağıdaki gibi değiştirirsem :
functionHolder = function(whatever) {
output("Stop counting!");
Sonra beklendiği gibi functionHolder(3);verirdi Stop counting!.
copyFunction(3);şimdi (kendisinin işaret ettiği) işlevi değil, 3 Stop counting!ifade ettiği şekilde verir functionHolder. Bu, bazı durumlarda arzu edilebilir, ancak işlevi, onu tutan değişkenden ziyade kendisini çağıracak şekilde yazmanın bir yolu var mı?
Yani, tüm bu adımlardan geçmek , aradığımızda hala verirse , sadece hattı değiştirmek mümkün müdür ? Denedim ama bu bana hata veriyor .functionHolder(counter-1);3 2 1 0copyFunction(3);this(counter-1);this is not a function