JavaScript Boucles récursives


Exemple

Tail Call Optimization permet de mettre en œuvre en toute sécurité des boucles récursives sans se soucier du débordement de la pile d'appels ou de la surcharge d'une pile de trames croissante.

function indexOf(array, predicate, i = 0) {
    if (0 <= i && i < array.length) {
        if (predicate(array[i])) {  return i; }
        return indexOf(array, predicate, i + 1); // the tail call
    }
}
indexOf([1,2,3,4,5,6,7], x => x === 5); // returns index of 5 which is 4