J'ai donc lu que ECMAScript6 (ES6) est capable de TCO. Je l'ai vu comme démontré: (exemple brut sans but pratique ...)Les méthodes récursives des classes ES6 tirent-elles parti de TCO (Tail Call Optimization)?
const tcoFn = (acc) => {
if (acc > 10) {
return acc
} else {
return tcoFn(acc + 1)
}
}
Ma question est de savoir si oui ou non il est connu que nous obtenons TCO dans une classe ES6? Ainsi,
class TCOish {
tcoMethod(acc) {
if (acc > 10) {
return acc
} else {
return tcoMethod(acc + 1)
}
}
} // End class definition
Après quelques recherches sur le Interwebs cela reste peu clair pour moi et je me demande s'il y a une réponse définitive que quelqu'un peut me pointer?
À noter également que cela sera utilisé dans l'application Node où nous ne nous soucions pas du navigateur ou de la transpiration.
Merci.
Il n'est pas implémenté dans le noeud – Amit
https://kangax.github.io/compat-table/es6/ – Andy
Le test pour cette optimisation est simple. Il suffit de lancer votre fonction avec une énorme quantité de récursion, et si vous obtenez une erreur "trop de récursivité", alors ce n'est pas le cas. –