Sobes.tech
Junior — Middle

Como é que se podem usar closures para alcançar o encapsulamento de dados em JavaScript?

sobes.tech IA

Resposta da IA

No JavaScript, os closures permitem criar variáveis privadas, às quais o acesso só é possível através de funções específicas, garantindo a encapsulação de dados.

Exemplo:

function createCounter() {
  let count = 0; // variável privada

  return {
    increment() {
      count++;
      return count;
    },
    getCount() {
      return count;
    }
  };
}

const counter = createCounter();
console.log(counter.increment()); // 1
console.log(counter.getCount());  // 1
console.log(counter.count);       // undefined — acesso direto não é possível

Aqui, count não é acessível diretamente do código externo, mas acessível através dos métodos increment e getCount. Isto permite controlar o acesso e a modificação dos dados, implementando a encapsulação através de closures.