Globālie mainīgie funkcijās JavaScript
JavaScript (lielākajā daļā citu valodu tas parasti nav tā) mainīgie, kas definēti ārpus funkcijas, būs redzami šīs funkcijas iekšienē. Tādus mainīgos sauc par globāliem mainīgajiem. Apskatīsim piemērā:
let num = 1; // mainīgais ārpus funkcijas
function func() {
console.log(num); // mainīgais num ir redzams funkcijas iekšienē
}
func(); // izvadīs 1
Patiesībā mainīgajam jābūt definētam ne pirms funkcijas definēšanas, bet pirms tās izsaukšanas:
function func() {
console.log(num);
}
let num = 1; // mainīgais ārpus funkcijas
func(); // izvadīs 1
Ja maina mainīgā vērtību un pēc tam
katru reizi izsauc funkciju - console.log katru
reizi izvadīs dažādus rezultātus:
function func() {
console.log(num);
}
let num; // deklarējam mainīgo
num = 1; // iestatām vērtību 1
func(); // izvadīs 1
num = 2; // iestatām vērtību 2
func(); // izvadīs 2
Ja mums ir vairākas funkcijas, tad globālais mainīgais būs pieejams katrā no šīm funkcijām:
function func1() {
console.log(num);
}
function func2() {
console.log(num);
}
let num = 1;
func1(); // izvadīs 1
func2(); // izvadīs 1
Ja vienā no funkcijām notiks izmaiņas ar globālo mainīgo, tad šis mainīgais mainīsies visās funkcijās, kas izmanto šo mainīgo:
function func1() {
console.log(num);
num++; // mainām globālo mainīgo
}
function func2() {
console.log(num);
}
let num = 1;
func1(); // izvadīs 1
func2(); // izvadīs 2
Tā kā jebkura no funkcijām var viegli mainīt globālo mainīgo, tad to izmantošana pārstāv grūti noķeramu kļūdu avotu. Šī iemesla dēļ globālo mainīgo izmantošanu skriptā nepieciešams samazināt līdz minimumam. Vēlams, lai to vispār nebūtu vai būtu vis mazākais daudzums.
Noteikt, nepalaist kodu, ko izvadīs konsole:
let num = 1;
function func() {
console.log(num);
}
func();
Noteikt, nepalaist kodu, ko izvadīs konsole:
let num = 1;
function func() {
console.log(num);
}
num = 2;
func();
Noteikt, nepalaist kodu, ko izvadīs konsole:
function func() {
console.log(num);
}
let num;
num = 1;
func();
num = 2;
func();