Variabler med samma namn i funktioner i JavaScript
Antag att det finns en variabel
num både utanför och inuti funktionen.
I detta fall kommer alla ändringar
av den lokala variabeln num inte att
påverka den globala variabeln num:
let num = 1; // global variabel
function func() {
let num = 2; // lokal variabel
console.log(num);
}
func(); // anropar funktionen, skriver ut 2
console.log(num); // skriver ut 1 - den globala variabeln förändrades inte
Men om vi glömmer att deklarera den lokala variabeln
num med let, kommer ingen lokal variabel
num att skapas inuti funktionen,
utan istället kommer den globala variabeln att ändras:
let num = 1;
function func() {
num = 2; // glömde att skriva let - ändrar den externa variabeln
console.log(num);
}
func(); // anropar funktionen, skriver ut 2
console.log(num); // skriver ut 2 - variabeln har ändrats
Det kan finnas två situationer här: antingen
vill vi verkligen ändra den globala variabeln (då
är allt ok), eller så har vi glömt let och av misstag
ändrat den globala variabeln.
Det andra fallet är ett svårfångat fel,
som leder till oförutsägbart beteende i skriptet.
Därför bör du alltid deklarera en ny variabel
med let.
Avgör, utan att köra koden, vad som kommer att skrivas ut i konsolen:
let num = 1;
function func() {
num = 2;
}
func();
console.log(num);
Avgör, utan att köra koden, vad som kommer att skrivas ut i konsolen:
let num = 1;
function func() {
let num = 2;
}
func();
console.log(num);