J'ai une queue récursive de l'algorithme de pathfinding que j'ai implémenté en Javascript et je voudrais savoir si toutes (tous?) les navigateurs ne peut pas faire de dépassement de pile exceptions.
Réponses
Trop de publicités?L'ECMAScript 4 spec a été à l'origine d'ajouter le support pour le coût total de possession, mais il a été abandonné.
http://lambda-the-ultimate.org/node/3047
Autant que je sache, aucun largement-disponible implémentations de JS, actuellement, n'automatique coût total de possession. Cela peut être utile pour vous, si:
http://www.paulbarry.com/articles/2009/08/30/tail-call-optimization
Essentiellement, à l'aide de l'accumulateur modèle accomplir le même effet.
Pas la joie pour le moment, mais heureusement, la bonne queue appels sont prévus pour l'Harmonie (ECMAScript version 6) http://wiki.ecmascript.org/doku.php?id=harmony:proper_tail_calls
À peu près chaque navigateur que vous rencontrez vous barf sur "trop de récursivité". Voici une entrée dans le V8 de bug tracker , qui sera probablement intéressant à lire.
Si c'est simple d'auto-récursivité, c'est probablement la peine de l'effort d'utiliser explicite itération plutôt que d'espérer pour la queue-appel d'élimination.
La queue d'appel d'optimisation est maintenant disponible dans LispyScript qui est compilé en javascript. Vous pouvez en lire plus à ce sujet ici.