Vienodi kintamųjų vardai funkcijose JavaScript
Tarkime, kad ir už funkcijos ribų, ir viduje yra kintamasis
num. Šiuo atveju bet kokie pakeitimai
su lokaliu kintamuoju num jokiu būdu
neveikia globalaus kintamojo num:
let num = 1; // globalus kintamasis
function func() {
let num = 2; // lokalus kintamasis
console.log(num);
}
func(); // iškviečiame funkciją, išves 2
console.log(num); // išves 1 - globalus kintamasis nepasikeitė
Bet jei pamiršime deklaruoti lokalų kintamąjį
num per let, tai funkcijos viduje
nesuksis lokalus kintamasis num,
o tiesiog bus pakeistas globalus kintamasis:
let num = 1;
function func() {
num = 2; // pamiršome parašyti let - keičiame išorinį kintamąjį
console.log(num);
}
func(); // iškviečiame funkciją, išves 2
console.log(num); // išves 2 - kintamasis pasikeitė
Čia gali būti dvi situacijos: arba mes tikrai
norėjome pakeisti globalų kintamąjį (tada
viskas gerai), arba mes pamiršome let ir netyčia
pakeitėme globalų kintamąjį.
Antroji situacija yra sunkiai pastebima klaida,
vedanti į nenuspėjamą scenarijaus elgesį.
Todėl visada, įvedant naują kintamąjį, deklaruokite
jį per let.
Nustatykite, nepalydedami kodo, kas bus išvesta į konsolę:
let num = 1;
function func() {
num = 2;
}
func();
console.log(num);
Nustatykite, nepalydedami kodo, kas bus išvesta į konsolę:
let num = 1;
function func() {
let num = 2;
}
func();
console.log(num);