O que seria exatamente um "escopo" na linguagem JavaScript?
O que seria exatamente um "escopo" na linguagem JavaScript?
Acredito que escopo pode ser definido como o trecho de código que é isolado ou não do restante do código. Por exemplo, com o uso de VAR para declarar variáveis estamos usando uma variável com escopo de função, diferente de LET que usa escopo de bloco , como é exemplificado aqui: https://www.alura.com.br/artigos/escopos-no-javascript?gclid=Cj0KCQjwmuiTBhDoARIsAPiv6L-RLVSiQiCAOIGU8srIdaI1AK_B1HWn1nDlSAyT3Q1bZwEevyqe2eUaAi55EALw_wcB. A forma mais simples que eu entendi é que o escopo se refere ao estado daquela variável, função ou objeto em diferentes partes do código, podendo ela ter o escopo de função, escopo global ou ter escopo de bloco. Sendo assim, escopo determina quais dados podem ser acessados de uma determinada parte do código.
A resposta do Kaio já está correta, mas apenas complementando:
Quando falamos sobre escopo, estamos falando sobre o limite ao acesso de uma variável por outras partes do código. Todas as variáveis tem um escopo, mas no JavaScript podem ser de função, outros globais e de bloco.
Se declararmos uma variável dentro de uma função, seu escopo se limita a ficar naquela função, isso seria o escopo de função. Se declararmos uma variável no começo do nosso código, fora de qualquer função ou método, isso seria o escopo global. Agora, se declararmos uma variável utilizando a palavra "let" dentro de um método, ela ficaria limitada a ficar ali dentro, isso seria o escopo de bloco. Ex.:
if (true) {
let i = 0;
alert(i) // Aparecerá um alert mostrando o número 0
}
alert(i); // Dará erro, pois let declara o escopo de bloco da variável i
Explicação perfeita Matheus, muito obrigado.