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:
let 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:
function 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:
function 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:
function 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:
function 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:
let num = 1;
function func() {
console.log(num);
}
func();
Bestäm, utan att köra koden, vad som kommer att skrivas ut i konsolen:
let 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:
function func() {
console.log(num);
}
let num;
num = 1;
func();
num = 2;
func();