JavaScriptтеги функциялардын тышкы өзгөрмөлөрүнө кирүү

Төмөнкү кодду карап көрөлү:

javascriptlet num = 1; // өзгөрмөнүн маанисин белгилөө

function func() {
  console.log(num); // аны консолго чыгаруу
}

func(); // функцияны чакыруу

Мен мурун айткандай, өзгөрмөнүн мааниси функциянын аныктамасынын алдында турбашы керек, негизгиси, ал анын чакырылышынын алдында турса болот:

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

let num = 1;
func();

Чынында бул так эмес. Биздин функция өзү чакырылганга чейин эле өзгөрмөнүн маанисин num билет:

javascriptlet num = 1;

function func() {
  console.log(num); // функция num = 1 экенин билет
}

Мына кыйыраак мисал:

javascriptlet num = 1; // функция бул учурда num = 1 экенин билет

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

num = 2; // функция бул учурда num = 2 экенин билет

Функциянын чакырылыштарын кошолу:

javascriptlet num = 1; // функция бул учурда num = 1 экенин билет
func(); // 1ди чыгарат

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

func(); // 1ди чыгарат
num = 2; // функция бул учурда num = 2 экенин билет
func(); // 2ни чыгарат

Дагы бир жолу: чынында функция тышкы өзгөрмөлөрдүн маанилерин, чакырылбай эле, билет.