2
respostas

let como parametro ou retorno

Surgiu agora a dúvida sobre a declaração de variavel com escopo de bloco, atravez de let. se uma let tem escopo do bloco onde é declarada, o que ocorre se passar ela como parametro para chamada de uma função declarada fora do bloco? ou ainda, o que ocorre com essa variavel se ela for declarada no interior do bloco de uma função e for retornada por essa função? ainda, se quebrarmos o fluxo com setTimeOut dentro de um bloco de uma função, chamando uma função externa mais demorada e para essa função passarmos um let criado na função corrente, a let vai ser passada ou lá ela não existira(na função chamada com settimeout, com por exemplo 2 segundos de delay, o que provavelmente ocorreria depois de encerrado o bloco que a chamou e onde foi declarado let)

2 respostas

Bom dia.

Em termos das aplicações de lógica de programação básica, let é idêntico a var. A única diferença marcante é que let tem escopo de bloco. Aliás, Java, C#, C, C++ todas essas linguagem possuem escopo de bloco e o JavaScript só ganhou esse recurso com o ESCMASCRIPT 6.

Lembre-se que em lógica de programação aprendemos que uma variável declarara em um escopo mais externo é acessível por um escopo mais interno e não o contrário.

Desde que a variável seja criada num bloco e seja chamada em uma função que tenha alguma relação com esse bloco, independente de setTimeout vai funcionar.

Neste exemplo da pra visualizar melhor a sua dúvida pelo que eu entendi: https://codepen.io/soutomario/pen/qXxXpq