Globaalsed muutujad funktsioonides JavaScriptis
JavaScriptis (enamikus teistes keeltes enamasti mitte nii) on funktsioonist väljaspool määratletud muutujad nähtavad selle funktsiooni sees. Selliseid muutujaid nimetatakse globaalseteks. Vaatame näidet:
let num = 1; // muutuja funktsioonist väljaspool
function func() {
console.log(num); // muutuja num on nähtav funktsiooni sees
}
func(); // väljastab 1
Tegelikult peab muutuja olema defineeritud mitte enne funktsiooni defineerimist, vaid enne selle kutsumist:
function func() {
console.log(num);
}
let num = 1; // muutuja funktsioonist väljaspool
func(); // väljastab 1
Kui muuta muutuja väärtust ja pärast seda
iga kord funktsiooni välja kutsuda - console.log
väljastab iga kord erineva tulemuse:
function func() {
console.log(num);
}
let num; // deklareerime muutuja
num = 1; // määrame väärtuseks 1
func(); // väljastab 1
num = 2; // määrame väärtuseks 2
func(); // väljastab 2
Kui meil on mitu funktsiooni, siis globaalne muutuja on ligipääsetev igas neist funktsioonidest:
function func1() {
console.log(num);
}
function func2() {
console.log(num);
}
let num = 1;
func1(); // väljastab 1
func2(); // väljastab 1
Kui ühes funktsioonidest muudetakse globaalset muutujat, siis see muutuja muutub kõigis funktsioonides, mis kasutavad seda muutujat:
function func1() {
console.log(num);
num++; // muudame globaalset muutujat
}
function func2() {
console.log(num);
}
let num = 1;
func1(); // väljastab 1
func2(); // väljastab 2
Kuna ükskõik milline funktsioonidest võib hõlpsasti muuta globaalset muutujat, siis nende kasutamine esindab endas raskesti tabavaid vigu. Sel põhjusel tuleks globaalsete muutujate kasutamist skriptis minimeerida. Soovitav on, et neid üldse ei oleks või oleks kõige minimaalsem kogus.
Määrake, ilma koodi käivitamata, mis väljastatakse konsooli:
let num = 1;
function func() {
console.log(num);
}
func();
Määrake, ilma koodi käivitamata, mis väljastatakse konsooli:
let num = 1;
function func() {
console.log(num);
}
num = 2;
func();
Määrake, ilma koodi käivitamata, mis väljastatakse konsooli:
function func() {
console.log(num);
}
let num;
num = 1;
func();
num = 2;
func();