Escopo da variável JavaScript (com exemplos)

Neste tutorial, você aprenderá sobre escopo de variável em JavaScript com a ajuda de exemplos.

O escopo se refere à disponibilidade de variáveis ​​e funções em certas partes do código.

Em JavaScript, uma variável tem dois tipos de escopo:

  1. Âmbito global
  2. Escopo Local

Âmbito global

Uma variável declarada no topo de um programa ou fora de uma função é considerada uma variável de escopo global.

Vamos ver um exemplo de variável de escopo global.

 // program to print a text let a = "hello"; function greet () ( console.log(a); ) greet(); // hello

No programa acima, a variável a é declarada no topo de um programa e é uma variável global. Isso significa que a variável apode ser usada em qualquer lugar do programa.

O valor de uma variável global pode ser alterado dentro de uma função. Por exemplo,

 // program to show the change in global variable let a = "hello"; function greet() ( a = 3; ) // before the function call console.log(a); //after the function call greet(); console.log(a); // 3

No programa acima, a variável a é uma variável global. O valor de a é hello. Em seguida, a variável a é acessada dentro de uma função e o valor muda para 3.

Conseqüentemente, o valor de a muda após alterá-lo dentro da função.

Nota : É uma boa prática evitar o uso de variáveis ​​globais porque o valor de uma variável global pode mudar em diferentes áreas do programa. Ele pode introduzir resultados desconhecidos no programa.

Em JavaScript, uma variável também pode ser usada sem declará-la. Se uma variável for usada sem declará-la, essa variável se tornará automaticamente uma variável global.

Por exemplo,

 function greet() ( a = "hello" ) greet(); console.log(a); // hello

No programa acima, a variável a é uma variável global.

Se a variável foi declarada usando let a = "hello", o programa geraria um erro.

Nota : Em JavaScript, existe "strict mode";em que uma variável não pode ser usada sem declará-la. Para saber mais sobre estrito, visite JavaScript Strict.

Escopo Local

Uma variável também pode ter um escopo local, ou seja, só pode ser acessada dentro de uma função.

Exemplo 1: Variável de Escopo Local

 // program showing local scope of a variable let a = "hello"; function greet() ( let b = "World" console.log(a + b); ) greet(); console.log(a + b); // error

Resultado

 helloWorld Uncaught ReferenceError: b não está definido

No programa acima, a variável a é uma variável global e a variável b é uma variável local. A variável b pode ser acessada apenas dentro da função greet. Portanto, quando tentamos acessar a variável b fora da função, ocorre um erro.

let is Block Scoped

A letpalavra-chave tem escopo de bloco (a variável pode ser acessada apenas no bloco imediato).

Exemplo 2: variável com escopo de bloco

 // program showing block-scoped concept // global variable let a = 'Hello'; function greet() ( // local variable let b = 'World'; console.log(a + ' ' + b); if (b == 'World') ( // block-scoped variable let c = 'hello'; console.log(a + ' ' + b + ' ' + c); ) // variable x cannot be accessed here console.log(a + ' ' + b + ' ' + c); ) greet();

Resultado

 Hello World Hello World hello Uncaught ReferenceError: x não está definido

No programa acima, a variável

  • a é uma variável global. Ele pode ser acessado em qualquer lugar do programa.
  • b é uma variável local. Ele pode ser acessado apenas dentro da função greet.
  • c é uma variável com escopo de bloco. Ele pode ser acessado apenas dentro do ifbloco de instruções.

Portanto, no programa acima, os dois primeiros console.log()funcionam sem problemas.

No entanto, estamos tentando acessar a variável de escopo de bloco c fora do bloco no terceiro console.log(). Isso gerará um erro.

Observação : em JavaScript, vartem escopo de função e escopo de letbloco. Se você tentar usar var c = 'hello';dentro da ifinstrução do programa acima, todo o programa funcionará, pois c é tratado como uma variável local.

Para saber mais sobre letversus var, visite JavaScript let vs var.

Artigos interessantes...