Escopo do JavaScript
O escopo determina a acessibilidade (visibilidade) das variáveis.
JavaScript tem 3 tipos de escopo:
- Escopo do bloco
- Escopo da função
- Âmbito global
Escopo do Bloco
Antes do ES6 (2015), JavaScript tinha apenas Escopo Global e Escopo de Função .
O ES6 introduziu duas novas palavras-chave JavaScript importantes: let
e const
.
Essas duas palavras-chave fornecem Block Scope em JavaScript.
Variáveis declaradas dentro de um bloco {} não podem ser acessadas de fora do bloco:
Exemplo
{
let x = 2;
}
// x can NOT be used here
Variáveis declaradas com a palavra- var
chave NÃO podem ter escopo de bloco.
Variáveis declaradas dentro de um bloco {} podem ser acessadas de fora do bloco.
Exemplo
{
var x = 2;
}
// x CAN be used here
Escopo Local
Variáveis declaradas dentro de uma função JavaScript tornam-se LOCAL para a função.
Exemplo
// code here can NOT use carName
function myFunction() {
let carName = "Volvo";
// code here CAN use carName
}
// code here can NOT use carName
As variáveis locais têm o escopo da função :
Eles só podem ser acessados de dentro da função.
Como as variáveis locais são reconhecidas apenas dentro de suas funções, variáveis com o mesmo nome podem ser usadas em funções diferentes.
As variáveis locais são criadas quando uma função é iniciada e excluídas quando a função é concluída.
Escopo da Função
JavaScript tem escopo de função: cada função cria um novo escopo.
Variáveis definidas dentro de uma função não são acessíveis (visíveis) de fora da função.
Variáveis declaradas com var
, let
e const
são bastante semelhantes quando declaradas dentro de uma função.
Todos eles têm escopo de função :
function myFunction() {
var carName = "Volvo";
// Function Scope
}
function myFunction() {
let carName = "Volvo"; //
Function Scope
}
function myFunction() {
const carName = "Volvo"; //
Function Scope
}
Variáveis JavaScript globais
Uma variável declarada fora de uma função torna-se GLOBAL .
Exemplo
let carName = "Volvo";
// code here can use carName
function myFunction() {
// code here can also use carName
}
Uma variável global tem Escopo Global :
Todos os scripts e funções em uma página da Web podem acessá-la.
Âmbito global
Variáveis declaradas Globalmente (fora de qualquer função) possuem Escopo Global .
As variáveis globais podem ser acessadas de qualquer lugar em um programa JavaScript.
Variáveis declaradas com var
, let
e const
são bastante semelhantes quando declaradas fora de um bloco.
Todos eles têm Escopo Global :
var x = 2;
// Global scope
let x = 2; //
Global scope
const x = 2; //
Global scope
Variáveis JavaScript
Em JavaScript, objetos e funções também são variáveis.
O escopo determina a acessibilidade de variáveis, objetos e funções de diferentes partes do código.
Automaticamente Global
Se você atribuir um valor a uma variável que não foi declarada, ela se tornará automaticamente uma variável GLOBAL .
Este exemplo de código declarará uma variável global carName
, mesmo que o valor seja atribuído dentro de uma função.
Exemplo
myFunction();
// code here can use carName
function myFunction() {
carName = "Volvo";
}
modo estrito
Todos os navegadores modernos suportam a execução de JavaScript no "Modo Estrito".
Você aprenderá mais sobre como usar o modo estrito em um capítulo posterior deste tutorial.
No "Strict Mode", as variáveis não declaradas não são automaticamente globais.
Variáveis globais em HTML
Com JavaScript, o escopo global é o ambiente JavaScript.
Em HTML, o escopo global é o objeto window.
As variáveis globais definidas com a palavra- var
chave pertencem ao objeto window:
Exemplo
var carName = "Volvo";
// code here
can use window.carName
Variáveis globais definidas com a palavra- let
chave não pertencem ao objeto window:
Exemplo
let carName = "Volvo";
// code here can not use window.carName
Aviso
NÃO crie variáveis globais a menos que você pretenda.
Suas variáveis globais (ou funções) podem substituir variáveis de janela (ou funções).
Qualquer função, incluindo o objeto de janela, pode substituir suas variáveis e funções globais.
A vida útil das variáveis JavaScript
O tempo de vida de uma variável JavaScript começa quando ela é declarada.
As variáveis de função (locais) são excluídas quando a função é concluída.
Em um navegador da Web, as variáveis globais são excluídas quando você fecha a janela do navegador (ou guia).
Argumentos da função
Os argumentos da função (parâmetros) funcionam como variáveis locais dentro das funções.