Globalūs kintamieji funkcijose JavaScript

JavaScript (daugelyje kitų kalbų dažniausiai taip nėra) kintamieji, apibrėžti už funkcijos ribų, bus matūs šios funkcijos viduje. Tokie kintamieji vadinami globaliaisiais. Pažiūrėkime pavyzdžiu:

javascriptlet num = 1; // kintamasis už funkcijos ribų

function func() {
  console.log(num); // kintamasis num matomas funkcijos viduje
}

func(); // išves 1

Iš tikrųjų kintamasis turi būti apibrėžtas ne prieš funkcijos apibrėžimą, o prieš jos iškvietimą:

javascriptfunction func() {
  console.log(num);
}

let num = 1; // kintamasis už funkcijos ribų
func();      // išves 1

Jei keičiate kintamojo reikšmę ir po to kaskart iškviečiate funkciją - console.log kaskart rodys skirtingus rezultatus:

javascriptfunction func() {
  console.log(num);
}

let num; // apibrėžiame kintamąjį

num = 1; // nustatome reikšmę 1
func();  // išves 1

num = 2; // nustatome reikšmę 2
func();  // išves 2

Jei turime kelias funkcijas, tai globalusis kintamasis bus prieinamas kiekvienoje iš šių funkcijų:

javascriptfunction func1() {
  console.log(num);
}

function func2() {
  console.log(num);
}

let num = 1;

func1(); // išves 1
func2(); // išves 1

Jei vienoje iš funkcijų bus atlikti pakeitimai su globaliuoju kintamuoju, tai šis kintamasis pakis visose funkcijose, naudojančiose šį kintamąjį:

javascriptfunction func1() {
  console.log(num);
  num++; // keičiame globalųjį kintamąjį
}

function func2() {
  console.log(num);
}

let num = 1;

func1(); // išves 1
func2(); // išves 2

Kadangi bet kuri funkcija gali lengvai pakeisti globalųjį kintamąjį, tai jų naudojimas reiškia sunkiai pastebimų klaidų šaltinį. Dėl šios priežasties globalių kintamųjų naudojimas scenarijuje turi būti sumažinamas iki minimumo. Pageidautina, kad jų iš viso nebus arba būtų kuo mažesnis kiekis.

Задание 1

Nustatykite, neleisdami kodui, kas bus išvesta į konsolę:

javascriptlet num = 1;
    
function func() {
  console.log(num);
}

func();
Задание 2

Nustatykite, neleisdami kodui, kas bus išvesta į konsolę:

javascriptlet num = 1;
    
function func() {
  console.log(num);
}

num = 2;
func();
Задание 3

Nustatykite, neleisdami kodui, kas bus išvesta į konsolę:

javascriptfunction func() {
  console.log(num);
}

let num;

num = 1;
func();

num = 2;
func();