JavaScript функцияларының сыртқы айнымалыларға қол жеткізуі

Келесі кодты қарастырайық:

javascriptlet num = 1; // айнымалыға мән береміз

function func() {
  console.log(num); // оны консольге шығарамыз
}

func(); // функцияны шақырамыз

Мен бұған дейін айтқанымдай, айнымалының мәні function анықтамасының алдында болуы міндетті емес, негізгісі, ол function шақырудың алдында болуы керек:

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

let num = 1;
func();

Шындығында бұл толығымен дұрыс емес. Біздің function тіпті өз шақырылуына дейін num айнымалысының мәнін біледі:

javascriptlet num = 1;

function func() {
  console.log(num); // function num = 1 екенін біледі
}

Мұнда күрделірек мысал:

javascriptlet num = 1; // function осы сәтте num = 1 екенін біледі

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

num = 2; // function осы сәтте num = 2 екенін біледі

Function шақыруларды қосамыз:

javascriptlet num = 1; // function осы сәтте num = 1 екенін біледі
func(); // 1 шығарады

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

func(); // 1 шығарады
num = 2; // function осы сәтте num = 2 екенін біледі
func(); // 2 шығарады

Тағы бір рет: шындығында function сыртқы айнымалылардың мәндерін тіпті шақырылмаған күйінде біледі.