diff options
Diffstat (limited to 'files/fr/web/javascript/reference/erreurs/too_much_recursion/index.html')
-rw-r--r-- | files/fr/web/javascript/reference/erreurs/too_much_recursion/index.html | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/files/fr/web/javascript/reference/erreurs/too_much_recursion/index.html b/files/fr/web/javascript/reference/erreurs/too_much_recursion/index.html new file mode 100644 index 0000000000..1e7bf8c0d0 --- /dev/null +++ b/files/fr/web/javascript/reference/erreurs/too_much_recursion/index.html @@ -0,0 +1,69 @@ +--- +title: 'InternalError: too much recursion' +slug: Web/JavaScript/Reference/Erreurs/Too_much_recursion +tags: + - Erreurs + - InternalError + - JavaScript + - Reference +translation_of: Web/JavaScript/Reference/Errors/Too_much_recursion +--- +<div>{{jsSidebar("Errors")}}</div> + +<h2 id="Message">Message</h2> + +<pre class="syntaxbox">Error: Out of stack space (Edge) +InternalError: too much recursion (Firefox) +RangeError: Maximum call stack size exceeded (Chrome) +</pre> + +<h2 id="Type_d'erreur">Type d'erreur</h2> + +<p>{{jsxref("InternalError")}}.</p> + +<h2 id="Quel_est_le_problème">Quel est le problème ?</h2> + +<p>Une fonction qui s'appelle elle-même est une fonction <em>recursive</em>. Lorsqu'une certaine condition est respectée, la fonction arrête de s'appeler elle-même, c'est ce qu'on appelle le cas initial.</p> + +<p>D'une certaine façon, une récursion est semblable à une boucle. Les deux exécutent le même code plusieurs fois, et les deux ont besoin d'une condition d'arrêt afin d'éviter une boucle infinie ou une récursion infinie. Lorsqu'il y a trop de niveaux de récursion ou une récursion infinie, JavaScript lèvera cette erreur.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cette fonction récursive est exécutée 10 fois comme l'indique la condition de sortie :</p> + +<pre class="brush: js">function loop(x) { + if (x >= 10) // "x >= 10" is the exit condition + return; + // do stuff + loop(x + 1); // the recursive call +} +loop(0);</pre> + +<p>Si la condition d'arrêt est beaucoup trop grande, cela ne fonctionnera pas :</p> + +<pre class="brush: js example-bad">function loop(x) { + if (x >= 1000000000000) + return; + // do stuff + loop(x + 1); +} +loop(0); + +// InternalError: too much recursion</pre> + +<p>Si la fonction récursive ne possède pas de cas initial, il n'y aura pas de condition de sortie et la fonction continuera de s'appeler indéfiniment.</p> + +<pre class="brush: js example-bad">function boucle(x) { + boucle(x + 1); + // il n'y a pas de cas initial +} + +boucle(0); +</pre> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li>{{Glossary("Récursion")}}</li> + <li><a href="/fr/docs/Web/JavaScript/Guide/Fonctions#La_récursivité">Les fonctions récursives</a></li> +</ul> |