Quando programamos em qualquer linguagem é importante entender conceitos da linguagem. Neste texto vou trazer de forma breve o conceito de escopos na linguagem Javascript.
O que são escopos?
Escopos diz respeito aos limites que permitem que uma variável pode ser acessada dentro do código. Ou seja, quem poderá acessar o seu conteúdo para ler ou alterar.
No Javascript temos dois escopos: o escopo global e o escopo local.
Grosso modo, o escopo global é relativo a todo o código, tem a sua acessibilidade a todo o fluxo de código, incluindo quando dentro de alguma função.
Enquanto o escopo local é aquele declarando dentro de uma função. O limite de sua acessibilidade se restringe ao contexto “{}” da função no qual foi declarado.
Vejamos um exemplo:
var nome = "Charles"
function obterIdade() {
var idade = 25
}
console.log(nome) // Charles
console.log(idade) // ReferenceError: idade is not defined
A variável nome está no escopo global e a variável idade está no escopo local da função “obterIdade”.
Quando tentamos exibir o conteúdo delas, nome é exibida normalmente, porém, para idade, é retornando um erro de referência. Acusa-se que idade não foi definida.
Este erro acontece porque a variável idade foi definida no escopo local da função “obterIdade”, nesse contexto ela só pode ser acessada dentro do domínio local dessa função. É uma limitação à acessibilidade da variável em ralação ao código.
Vejamos um outro exemplo, em que observamos a acessibilidade de uma variável declarada no escopo local por uma função.
var nome = "Charles"
function obterIdade() {
var idade = 25
console.log(nome) // Charles
console.log(idade) // 25
}
obterIdade()
No exemplo acima é chamada a função “obterIdade” para que seja exibido o conteúdo das variáveis nome e idade. Nesse exemplo, a variável nome é impresso mesmo que declarada fora do escopo da função em que se encontra.
Isso acontece, porque ela foi declarada no escopo local, que permite que a variável seja acessada quando no âmbito do escopo global ou local de alguma função.
Assim, quando dizemos que a variável está declarada no escopo global, significa que sua acessibilidade é para todo o código. E quando referimos ao escopo local, é que ela só acessível no contexto da função que está localizada.
Compreender o conceito de escopos é importante, pois permite tenhamos conhecimento da capacidade de acesso, mutabilidade e o controle sobre código que estamos escrevendo.
Nota que aqui me restringi apenas a tratar sobre escopos na linguagem Javascript, não me adentrei na explicação de var, let e const. Em outro momento explicarei as diferenças entre essas formas de declarar uma variável, bem como o processo de hoisting.
Top comments (0)