Globálne premenné vo funkciách v JavaScripte
V JavaScripte (v iných jazykoch najčastejšie to tak nie je) premenné definované mimo funkcie budú viditeľné vo vnútri tejto funkcie. Takéto premenné sa nazývajú globálne. Pozrime sa na príklad:
let num = 1; // premenná mimo funkcie
function func() {
console.log(num); // premenná num je viditeľná vo vnútri funkcie
}
func(); // vypíše 1
V skutočnosti musí byť premenná definovaná nie pred definíciou funkcie, ale pred jej volaním:
function func() {
console.log(num);
}
let num = 1; // premenná mimo funkcie
func(); // vypíše 1
Ak meníte hodnotu premennej a potom
zakaždým voláte funkciu - console.log
zakaždým vypíše rôzne výsledky:
function func() {
console.log(num);
}
let num; // deklarujeme premennú
num = 1; // nastavíme hodnotu 1
func(); // vypíše 1
num = 2; // nastavíme hodnotu 2
func(); // vypíše 2
Ak máme viacero funkcií, tak globálna premenná bude prístupná v každej z týchto funkcií:
function func1() {
console.log(num);
}
function func2() {
console.log(num);
}
let num = 1;
func1(); // vypíše 1
func2(); // vypíše 1
Ak v jednej z funkcií dôjde k zmenám globálnej premennej, tak táto premenná sa zmení vo všetkých funkciách, ktoré používajú túto premennú:
function func1() {
console.log(num);
num++; // meníme globálnu premennú
}
function func2() {
console.log(num);
}
let num = 1;
func1(); // vypíše 1
func2(); // vypíše 2
Pretože ľubovoľná z funkcií môže ľahko zmeniť globálnu premennú, tak ich používanie predstavuje živnú pôdu pre ťažko zachytiteľné chyby. Z tohto dôvodu je potrebné používanie globálnych premenných v skripte minimalizovať. Žiaduce je, aby ich vôbec nebolo alebo bolo čo najmenšie množstvo.
Určite, bez spúšťania kódu, čo sa vypíše do konzoly:
let num = 1;
function func() {
console.log(num);
}
func();
Určite, bez spúšťania kódu, čo sa vypíše do konzoly:
let num = 1;
function func() {
console.log(num);
}
num = 2;
func();
Určite, bez spúšťania kódu, čo sa vypíše do konzoly:
function func() {
console.log(num);
}
let num;
num = 1;
func();
num = 2;
func();