DEV Community

Plínio Ribeiro
Plínio Ribeiro

Posted on

Diferenças entre escopos no JavaScript

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
Enter fullscreen mode Exit fullscreen mode

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()
Enter fullscreen mode Exit fullscreen mode

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)