JavaScript Variable Scope

Scope refere-se à disponibilidade de variáveis e funções em certas partes do Código.

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

  1. Escopo Global
  2. Escopo Local

Escopo 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 uma 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. Significa que a variável a pode 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 variablelet a = "hello";function greet() { a = 3;}// before the function callconsole.log(a);//after the function callgreet();console.log(a); // 3

no programa acima, a variável A é uma variável global. O valor de A é Olá. Então a variável a é acessada dentro de uma função e o valor muda para 3.

portanto, o valor de uma mudança após alterá-la dentro da função.Nota: É uma boa prática evitar usar variáveis globais porque o valor de uma variável global pode mudar em diferentes áreas do programa. Pode introduzir resultados desconhecidos no programa.

em JavaScript, uma variável também pode ser usada sem declará-la. Se uma variável é usada sem declará-la, essa variável automaticamente se torna 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 iria lançar um erro.Nota: Em JavaScript, há "strict mode"; em que uma variável não pode ser usada sem declará-la. Para saber mais sobre strict, visite JavaScript Strict.

Escopo Local

Uma variável também pode ter um escopo local, eu.e ele só pode ser acessado dentro de uma função.

Exemplo 1: Local de Escopo Variável

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

Saída

helloWorldUncaught ReferenceError: b is not defined

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

let is Block Scoped

The let keyword is block-scoped (variable can be accessed only in the immediate block).

Exemplo 2: bloco de escopo Variável

// program showing block-scoped concept// global variablelet 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();

Saída

Hello WorldHello World helloUncaught ReferenceError: x is not defined

No programa acima, a variável

  • é uma variável global. Ele pode ser acessado em qualquer lugar do programa.
  • b é uma variável local. It can be accessed only inside the function greet.
  • C é uma variável em bloco. It can be accessed only inside the if statement block.

portanto, no programa acima, os dois primeiros console.log() trabalham sem qualquer problema.

no entanto, estamos tentando acessar a variável C de escopo em bloco fora do bloco no terceiroconsole.log(). Isto vai lançar um erro.

nota: em JavaScript, varé função escopada elet é scoped em bloco. Se você tentar usar var c = 'hello'; dentro de if instrução no programa acima, todo o programa funciona, como c é tratada como uma variável local.

para saber mais sobre let versus var, visite JavaScript let vs var.

Related Posts

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *