Êtes-vous curieux de savoir combien d'appels récursifs le moteur JavaScript peut effectuer ?
Combien d'appels récursifs
La fonction suivante vous permettra de trouver la réponse : (Inspiré de l'essentiel de Ben Alman)
Trois résultats :
Que représentent ces chiffres ? M. Aleph a souligné que dans V8, le nombre d'appels récursifs dépend de deux quantités : la taille de la pile et la taille du frame de pile (la variable locale qui contient les paramètres). Vous pouvez le vérifier en ajoutant une variable locale dans calculateMaxCallStackSize() - elle renverra la valeur faible.
Optimisation des appels de queue dans ECMAScript 6
ES6 a une optimisation des appels de queue : si la dernière étape d'une fonction est également un appel de fonction, elle sera "ignorée" au lieu d'être appelée via une sous-fonction. Cela signifie que sous ES6 (mode strict), il vous suffit de modifier légèrement la fonction calculateMaxCallStackSize et elle peut s'exécuter pour toujours.