Open Source Closures E Escopos Em Javascript

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