Sind Sie neugierig, wie viele rekursive Aufrufe die JavaScript-Engine durchführen kann?
Wie viele rekursive Aufrufe
Mit der folgenden Funktion können Sie die Antwort finden: (Inspiriert von Ben Almans Kerngedanken)
Drei Ergebnisse:
Was bedeuten diese Zahlen? Herr Aleph wies darauf hin, dass in V8 die Anzahl der rekursiven Aufrufe von zwei Größen abhängt: der Größe des Stapels und der Größe des Stapelrahmens (der lokalen Variablen, die die Parameter enthält). Sie können dies überprüfen, indem Sie in „computeMaxCallStackSize()“ eine lokale Variable hinzufügen – sie gibt den niedrigen Wert zurück.
Tail-Call-Optimierung in ECMAScript 6
ES6 verfügt über eine Tail-Call-Optimierung: Wenn der letzte Schritt in einer Funktion ebenfalls ein Funktionsaufruf ist, wird er „übersprungen“, anstatt über eine Unterfunktion aufgerufen zu werden. Das bedeutet, dass Sie unter ES6 (strenger Modus) die Funktion „computeMaxCallStackSize“ nur geringfügig ändern müssen und sie für immer ausgeführt werden kann.