ExpertiDict

JavaScript · Avançado · Inglês · Técnico

tail call optimization

/teɪl kɔl ˌɑptɪmɪˈzeɪʃən/substantivo

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 V8

Exemplos

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

Veja também

Todos os termos de JavaScript