Heim > Artikel > Web-Frontend > Detaillierte Erläuterung der Verwendung rekursiver Funktionen in JavaScript
In unserem vorherigen Artikel haben wir die rekursive Funktion in JavaScript analysiert. Ich glaube, Sie haben ein gewisses Verständnis dafür. Hier sind die rekursiven Funktionen in JavaScript. Wie verwendet man sie? Heute gebe ich Ihnen eine detaillierte Einführung in die Verwendung rekursiver Funktionen in JavaScript!
Die sogenannte rekursive Funktion besteht darin, diese Funktion innerhalb des Funktionskörpers aufzurufen. Seien Sie vorsichtig, wenn Sie rekursive Funktionen verwenden. Bei unsachgemäßer Handhabung gelangen Sie in eine Endlosschleife. Rekursive Funktionen werden nur in bestimmten Situationen verwendet, z. B. bei faktoriellen Problemen
Versuchen wir, eine Fakultät innerhalb von 10 zu erstellen:
[Strg+A Alles auswählen Hinweis: Wenn Sie externe Js-Anforderungen einführen müssen muss aktualisiert werden, bevor es ausgeführt werden kann]
Das ist alles für den Aufruf der rekursiven Funktion
Die Versicherungsmethode, wenn sich die rekursive js-Funktion selbst aufruft.
Aus der erweiterten js-Programmierung
Eine typische faktorielle rekursive Funktion:
Der Code lautet wie folgt:
function fact(num){ if (num<=1){ return 1; }else{ return num*fact(num-1); } }
Der folgende Code kann einen Fehler verursachen:
var anotherFact = fact; fact = null; alert(antherFact(4)); //出错
Da Fakt keine Funktion mehr ist, ist ein Fehler aufgetreten.
Das Problem kann mit arguments.callee gelöst werden, das ein Zeiger auf die ausgeführte Funktion ist.
Die neue Funktion ist:
Der Code lautet wie folgt:
function fact(num){ if (num<=1){ return 1; }else{ return num*arguments.callee(num-1); //此处更改了。 } } var anotherFact = fact; fact = null; alert(antherFact(4)); //结果为24.
Verbesserung der gewöhnlichen JS-Rekursion
Die rekursive Funktion ist in einer Funktion übergeben Es wird gebildet, wenn der Name sich selbst aufruft, wie unten gezeigt:
Der Code lautet wie folgt:
function factorial(num) { if(num<=1) { return 1; } else { return num * factorial(num-1); } }
Dies ist eine klassische Fakultätsfunktion. Oberflächlich betrachtet scheint es kein Problem zu geben, aber der folgende Code kann dazu führen, dass es schief geht.
var anotherFactorial = factorial; anotherFactorial(4); //输出 24 factorial = null;
anotherFactory (4); //TypeError: Property 'factorial' of object [object Window] is not a function Getestet unter chrome
Der Grund ist dass, Der von uns definierte Funktionsname ist tatsächlich ein Zeiger auf die Funktion. Zu diesem Zeitpunkt ist anotherFactorial definiert und zeigt auf diese Funktion, sodass der Aufruf von anotherFactorial (4) erfolgreich ausgegeben werden kann 24
Zu diesem Zeitpunkt istfactorial = null; ausführen Die Referenz der definierten Funktion wird bei anotherFactorial belassen, dann wird beim Aufruf von anotherFactorial(4) die obige Fehlermeldung angezeigt.
Zu diesem Zeitpunkt kann arguments.callee verwendet werden, um die Funktion in der Funktionsdefinition zu ersetzen:
function factorial(num) { if(num<=1) { return 1; } else { return num * arguments.callee(num-1); } }Unter Verwendung der oben genannten 4 Zeilen Testcode kann die letzte Zeile Testcode auch erfolgreich 24 ausgeben.
Zusammenfassung:
Durch die ausführliche Einführung im obigen Artikel glaube ich, dass Freunde ein besseres Verständnis für die Verwendung rekursiver Funktionen in JavaScript haben. Ich hoffe, dass dies für Ihre Arbeit hilfreich sein wird!Verwandte Empfehlungen:
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung rekursiver Funktionen in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!