Globalne spremenljivke v funkcijah v JavaScript
V JavaScript (v drugih jezikih je pogosto drugače) so spremenljivke, definirane zunaj funkcije, vidne znotraj te funkcije. Take spremenljivke imenujemo globalne. Poglejmo na primeru:
let num = 1; // spremenljivka zunaj funkcije
function func() {
console.log(num); // spremenljivka num je vidna znotraj funkcije
}
func(); // izpiše 1
Pravzaprav mora biti spremenljivka definirana ne pred definicijo funkcije, ampak pred njenim klicem:
function func() {
console.log(num);
}
let num = 1; // spremenljivka zunaj funkcije
func(); // izpiše 1
Če spreminjamo vrednost spremenljivke in po tem
vsakič kličemo funkcijo - console.log bo
vsakič izpisal različne rezultate:
function func() {
console.log(num);
}
let num; // deklariramo spremenljivko
num = 1; // nastavimo vrednost 1
func(); // izpiše 1
num = 2; // nastavimo vrednost 2
func(); // izpiše 2
Če imamo več funkcij, bo globalna spremenljivka dostopna v vsaki od teh funkcij:
function func1() {
console.log(num);
}
function func2() {
console.log(num);
}
let num = 1;
func1(); // izpiše 1
func2(); // izpiše 1
Če se v eni od funkcij spremenijo globalne spremenljivke, se bo ta spremenljivka spremenila v vseh funkcijah, ki uporabljajo to spremenljivko:
function func1() {
console.log(num);
num++; // spreminjamo globalno spremenljivko
}
function func2() {
console.log(num);
}
let num = 1;
func1(); // izpiše 1
func2(); // izpiše 2
Ker lahko katera koli funkcija zlahka spremeni globalno spremenljivko, je njihova uporaba razmnoževalnik težko ujetih napak. Zaradi tega je uporabo globalnih spremenljivk v skripti treba zmanjšati na minimum. Zaželeno je, da jih sploh ni ali da jih je najmanjše možno število.
Določite, ne da bi zagnali kodo, kaj se bo izpisalo v konzolo:
let num = 1;
function func() {
console.log(num);
}
func();
Določite, ne da bi zagnali kodo, kaj se bo izpisalo v konzolo:
let num = 1;
function func() {
console.log(num);
}
num = 2;
func();
Določite, ne da bi zagnali kodo, kaj se bo izpisalo v konzolo:
function func() {
console.log(num);
}
let num;
num = 1;
func();
num = 2;
func();