Enaka imena spremenljivk v funkcijah v JavaScript
Naj bo tako zunaj funkcije kot znotraj spremenljivka
num. V tem primeru kakršne koli spremembe
z lokalno spremenljivko num ne vplivajo
na globalno spremenljivko num:
let num = 1; // globalna spremenljivka
function func() {
let num = 2; // lokalna spremenljivka
console.log(num);
}
func(); // kličemo funkcijo, izpiše 2
console.log(num); // izpiše 1 - globalna spremenljivka se ni spremenila
Toda, če pozabimo deklarirati lokalno spremenljivko
num z let, potem se znotraj funkcije
ne bo ustvarila lokalna spremenljivka num,
ampak se bo preprosto spremenila globalna spremenljivka:
let num = 1;
function func() {
num = 2; // pozabili napisati let - spreminjamo zunanjo spremenljivko
console.log(num);
}
func(); // kličemo funkcijo, izpiše 2
console.log(num); // izpiše 2 - spremenljivka se je spremenila
Tu sta možni dve situaciji: ali smo resnično
želeli spremeniti globalno spremenljivko (potem
je vse v redu), ali smo pozabili let in po naključju
spremenili globalno spremenljivko.
Druga situacija je težko zaznavna napaka,
ki vodi do nepredvidljivega obnašanja skripte.
Zato vedno, ko vnašate novo spremenljivko, jo deklarirajte
z let.
Določite, ne da bi zagnali kodo, kaj se bo izpisalo v konzolo:
let num = 1;
function func() {
num = 2;
}
func();
console.log(num);
Določite, ne da bi zagnali kodo, kaj se bo izpisalo v konzolo:
let num = 1;
function func() {
let num = 2;
}
func();
console.log(num);