Variáveis Globais em Funções em JavaScript
Em JavaScript (na maioria das outras linguagens, geralmente não é assim) variáveis definidas fora de uma função, serão visíveis dentro dessa função. Tais variáveis são chamadas de globais. Vamos ver um exemplo:
let num = 1; // variável fora da função
function func() {
console.log(num); // a variável num é visível dentro da função
}
func(); // exibirá 1
Na verdade, a variável deve ser definida não antes da definição da função, mas antes de sua chamada:
function func() {
console.log(num);
}
let num = 1; // variável fora da função
func(); // exibirá 1
Se você alterar o valor da variável e depois
chamar a função cada vez - console.log
exibirá resultados diferentes cada vez:
function func() {
console.log(num);
}
let num; // declaramos a variável
num = 1; // definimos o valor como 1
func(); // exibirá 1
num = 2; // definimos o valor como 2
func(); // exibirá 2
Se tivermos várias funções, então a variável global estará disponível em cada uma dessas funções:
function func1() {
console.log(num);
}
function func2() {
console.log(num);
}
let num = 1;
func1(); // exibirá 1
func2(); // exibirá 1
Se em uma das funções ocorrerem alterações na variável global, então essa variável mudará em todas as funções que usam essa variável:
function func1() {
console.log(num);
num++; // alteramos a variável global
}
function func2() {
console.log(num);
}
let num = 1;
func1(); // exibirá 1
func2(); // exibirá 2
Como qualquer uma das funções pode facilmente alterar a variável global, seu uso representa um criadouro de erros difíceis de detectar. Por esse motivo, o uso de variáveis globais em um script deve ser minimizado. É desejável que não existam nenhuma ou que exista a quantidade mínima possível.
Determine, sem executar o código, o que será exibido no console:
let num = 1;
function func() {
console.log(num);
}
func();
Determine, sem executar o código, o que será exibido no console:
let num = 1;
function func() {
console.log(num);
}
num = 2;
func();
Determine, sem executar o código, o que será exibido no console:
function func() {
console.log(num);
}
let num;
num = 1;
func();
num = 2;
func();