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:

javascriptlet 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:

javascriptlet 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.

Задание 1

Nustatykite, nepalydedami kodo, kas bus išvesta į konsolę:

javascriptlet num = 1;

function func() {
  num = 2;
}
func();

console.log(num);
Задание 2

Nustatykite, nepalydedami kodo, kas bus išvesta į konsolę:

javascriptlet num = 1;

function func() {
  let num = 2;
}
func();

console.log(num);