JavaScript · Avançado · Inglês · Técnico
tail call optimization
Técnica em que a chamada na última posição de uma função reaproveita o quadro da pilha. Prevista no ES2015, só o Safari a implementa; Node e Chrome não.
Onde usar
Surge ao discutir recursão: sem essa otimização, recursões profundas estouram a pilha. Em code review, prefira um laço a contar com ela.
Em código
function soma(n, acc = 0) {
if (n === 0) return acc;
return soma(n - 1, acc + n); // cauda
}
console.log(soma(10)); // 55
soma(1e6); // RangeError no V8Exemplos
Don't count on tail call optimization in Node.
Não conte com tail call optimization no Node.
Only Safari implements tail call optimization.
Só o Safari implementa tail call optimization.
Cuidado
Escrever recursão de cauda esperando que o Node não estoure a pilha; o V8 não implementa a otimização.
Sinônimos
TCO, otimização de chamada de cauda