Variabile globale în funcții în JavaScript
În JavaScript (în majoritatea celorlalte limbi nu este așa) variabilele definite în afara funcției, vor fi vizibile în interiorul acelei funcții. Astfel de variabile se numesc globale. Să vedem un exemplu:
let num = 1; // variabilă în afara funcției
function func() {
console.log(num); // variabila num este vizibilă în interiorul funcției
}
func(); // va afișa 1
De fapt, variabila trebuie să fie definită nu înainte de definirea funcției, ci înainte de apelarea ei:
function func() {
console.log(num);
}
let num = 1; // variabilă în afara funcției
func(); // va afișa 1
Dacă schimbăm valoarea variabilei și după aceea
de fiecare dată apelăm funcția - console.log
de fiecare dată va afișa rezultate diferite:
function func() {
console.log(num);
}
let num; // declarăm variabila
num = 1; // setăm valoarea 1
func(); // va afișa 1
num = 2; // setăm valoarea 2
func(); // va afișa 2
Dacă avem mai multe funcții, atunci variabila globală va fi accesibilă în fiecare dintre aceste funcții:
function func1() {
console.log(num);
}
function func2() {
console.log(num);
}
let num = 1;
func1(); // va afișa 1
func2(); // va afișa 1
Dacă într-una dintre funcții vor avea loc modificări ale variabilei globale, atunci această variabilă se va schimba în toate funcțiile care folosesc această variabilă:
function func1() {
console.log(num);
num++; // modificăm variabila globală
}
function func2() {
console.log(num);
}
let num = 1;
func1(); // va afișa 1
func2(); // va afișa 2
Deoarece oricare dintre funcții le poate schimba cu ușurință variabila globală, utilizarea lor reprezintă un focar de erori greu de depistat. Din acest motiv, utilizarea variabilelor globale în script trebuie redusă la minimum. Este de dorit să nu existe deloc sau să fie un număr minim.
Stabiliți, fără a rula codul, ce se va afișa în consolă:
let num = 1;
function func() {
console.log(num);
}
func();
Stabiliți, fără a rula codul, ce se va afișa în consolă:
let num = 1;
function func() {
console.log(num);
}
num = 2;
func();
Stabiliți, fără a rula codul, ce se va afișa în consolă:
function func() {
console.log(num);
}
let num;
num = 1;
func();
num = 2;
func();