Globala variabler i funktioner i JavaScript
I JavaScript (i de flesta andra språk är det oftast inte så) variabler som definieras utanför en funktion, kommer att vara synliga inuti den funktionen. Sådana variabler kallas globala. Låt oss titta på ett exempel:
javascriptlet num = 1; // variabel utanför funktionen
function func() {
console.log(num); // variabeln num är synlig inuti funktionen
}
func(); // skriver ut 1
Egentligen ska variabeln definieras inte före definitionen av funktionen, utan före dess anrop:
javascriptfunction func() {
console.log(num);
}
let num = 1; // variabel utanför funktionen
func(); // skriver ut 1
Om man ändrar variabelns värde och därefter
varje gång anropar funktionen - console.log varje
gång kommer att skriva ut olika resultat:
javascriptfunction func() {
console.log(num);
}
let num; // deklarerar variabeln
num = 1; // sätter värdet till 1
func(); // skriver ut 1
num = 2; // sätter värdet till 2
func(); // skriver ut 2
Om vi har flera funktioner, så kommer den globala variabeln att vara tillgänglig i var och en av dessa funktioner:
javascriptfunction func1() {
console.log(num);
}
function func2() {
console.log(num);
}
let num = 1;
func1(); // skriver ut 1
func2(); // skriver ut 1
Om förändringar sker i en av funktionerna med den globala variabeln, så kommer den variabeln att ändras i alla funktioner som använder denna variabel:
javascriptfunction func1() {
console.log(num);
num++; // ändrar den globala variabeln
}
function func2() {
console.log(num);
}
let num = 1;
func1(); // skriver ut 1
func2(); // skriver ut 2
Eftersom vilken som helst av funktionerna lätt kan ändra en global variabel, så representerar deras användning en härd för svårfångade fel. Av denna anledning bör användningen av globala variabler i skriptet minimeras. Det är önskvärt att de inte finns alls eller att det finns ett minimalt antal.
Bestäm, utan att köra koden, vad som kommer att skrivas ut i konsolen:
javascriptlet num = 1;
function func() {
console.log(num);
}
func();
Bestäm, utan att köra koden, vad som kommer att skrivas ut i konsolen:
javascriptlet num = 1;
function func() {
console.log(num);
}
num = 2;
func();
Bestäm, utan att köra koden, vad som kommer att skrivas ut i konsolen:
javascriptfunction func() {
console.log(num);
}
let num;
num = 1;
func();
num = 2;
func();