Nomes iguais de variáveis em funções em JavaScript
Suponha que exista uma variável
num tanto fora quanto dentro da função.
Neste caso, quaisquer alterações na variável local
num não afetam de forma alguma a variável global
num:
let num = 1; // variável global
function func() {
let num = 2; // variável local
console.log(num);
}
func(); // chamamos a função, exibirá 2
console.log(num); // exibirá 1 - a variável global não mudou
Mas, se esquecermos de declarar a variável local
num usando let, então dentro da função
não será criada uma variável local num,
e sim a variável global será alterada:
let num = 1;
function func() {
num = 2; // esquecemos de escrever let - alterando a variável externa
console.log(num);
}
func(); // chamamos a função, exibirá 2
console.log(num); // exibirá 2 - a variável mudou
Pode haver duas situações: ou nós realmente
queríamos alterar a variável global (então
está tudo bem), ou esquecemos o let e acidentalmente
alteramos a variável global.
O segundo caso é um erro difícil de detectar,
que leva a um comportamento imprevisível do script.
Portanto, sempre declare novas variáveis
usando let.
Determine, sem executar o código, o que será exibido no console:
let num = 1;
function func() {
num = 2;
}
func();
console.log(num);
Determine, sem executar o código, o que será exibido no console:
let num = 1;
function func() {
let num = 2;
}
func();
console.log(num);