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
0
yukarıdaki gibi çıktı . Daha sonra functionHolder
aş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
0
copyFunction(3);
this(counter-1);
this is not a function