Open Source Closures E Escopos Em Javascript
typescript function externa(): void { let mensagem: string = \"Olá do escopo externo!\";
function interna(): void { console.log(mensagem); // A função interna acessa 'mensagem' da função externa }
typescript function criarContador(): () => number { let contador: number = 0; // Variável no escopo da função externa
// A função interna (closure) é retornada return function incrementar(): number { contador++; // Acesso e modificação da variável 'contador' console.log(Valor atual: ${contador}); return contador; }; }
const meuContador = criarContador(); // A função externa 'criarContador' executa e retorna a função 'incrementar'
meuContador(); // Saída: Valor atual: 1 meuContador(); // Saída: Valor atual: 2 meuContador(); // Saída: Valor atual: 3
// 'meuContador' é uma closure. Ela \"lembra\" da variável 'contador' // mesmo após 'criarContador' ter finalizado sua execução.
const dobrar = criarMultiplicador(2); const triplicar = criarMultiplicador(3);
console.log(Dobro de 5: ${dobrar(5)}); // Saída: Dobro de 5: 10 console.log(Triplo de 5: ${triplicar(5)}); // Saída: Triplo de 5: 15
typescript function criarPessoa(nomeInicial: string) { let _nome: string = nomeInicial; // Variável \"privada\" pelo escopo
Source: Dev.to