Globaalit muuttujat funktioissa JavaScriptissä
JavaScriptissä (useimmissa muissa kielissä yleensä ei näin) funktion ulkopuolella määritellyt muuttujat ovat näkyvissä funktion sisällä. Such variables are called globaaleja muuttujia. Katsotaan esimerkkiä:
let num = 1; // muuttuja funktion ulkopuolella
function func() {
console.log(num); // muuttuja num näkyy funktion sisällä
}
func(); // tulostaa 1
Itse asiassa muuttujan on oltava määritelty ei ennen funktion määrittelyä, vaan ennen sen kutsua:
function func() {
console.log(num);
}
let num = 1; // muuttuja funktion ulkopuolella
func(); // tulostaa 1
Jos muutat muuttujan arvoa ja sen jälkeen
kutsumme funktiota joka kerta - console.log
tulostaa eri tulokset joka kerta:
function func() {
console.log(num);
}
let num; // määritellään muuttuja
num = 1; // asetetaan arvoksi 1
func(); // tulostaa 1
num = 2; // asetetaan arvoksi 2
func(); // tulostaa 2
Jos meillä on useita funktioita, globaali muuttuja on saatavilla jokaisessa näistä funktioista:
function func1() {
console.log(num);
}
function func2() {
console.log(num);
}
let num = 1;
func1(); // tulostaa 1
func2(); // tulostaa 1
Jos yhdessä funktioista tapahtuu muutoksia globaaliin muuttujaan, tämä muuttuja muuttuu kaikissa muuttujaa käyttävissä funktioissa:
function func1() {
console.log(num);
num++; // muutetaan globaalia muuttujaa
}
function func2() {
console.log(num);
}
let num = 1;
func1(); // tulostaa 1
func2(); // tulostaa 2
Koska mikä tahansa funktioista voi helposti muuttaa globaalia muuttujaa, niiden käyttö edustaa hedelmällistä maaperää vaivihkaisille virheille. Tästä syystä globaalien muuttujien käyttöä skriptissä tulisi vähentää minimiin. On toivottavaa, että niitä ei olisi ollenkaan tai olisi vain minimaalinen määrä.
Päätä, suorittamatta koodia, mitä tulostetaan konsoliin:
let num = 1;
function func() {
console.log(num);
}
func();
Päätä, suorittamatta koodia, mitä tulostetaan konsoliin:
let num = 1;
function func() {
console.log(num);
}
num = 2;
func();
Päätä, suorittamatta koodia, mitä tulostetaan konsoliin:
function func() {
console.log(num);
}
let num;
num = 1;
func();
num = 2;
func();