JavaScriptda funksiyalarning tashqi o'zgaruvchilarga kirishi

Quyidagi kodni ko'rib chiqaylik:

javascriptlet num = 1; // o'zgaruvchi qiymatini belgilaymiz

function func() {
  console.log(num); // uni konsolga chiqaramiz
}

func(); // funksiyani chaqiramiz

Ilgari ta'kidlaganimdek, o'zgaruvchi qiymati funksiya aniqlanishidan oldin bo'lishi shart emas, asosiysi, u chaqirilishidan oldin bo'lsin:

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

let num = 1;
func();

Aslida bu mutlaqo to'g'ri emas. Bizning funksiyamiz hatto o'z chaqirilishidan oldin ham num o'zgaruvchisining qiymatini biladi:

javascriptlet num = 1;

function func() {
  console.log(num); // funksiya allaqachon num = 1 ekanligini biladi
}

Mana yanada murakkab misol:

javascriptlet num = 1; // funksiya bu paytda num = 1 ekanligini bilib oladi

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

num = 2; // funksiya bu paytda num = 2 ekanligini bilib oladi

Funksiya chaqiruvlarini qo'shamiz:

javascriptlet num = 1; // funksiya bu paytda num = 1 ekanligini bilib oladi
func(); // 1 chiqadi

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

func(); // 1 chiqadi
num = 2; // funksiya bu paytda num = 2 ekanligini bilib oladi
func(); // 2 chiqadi

Yana bir bor: aslida funksiya tashqi o'zgaruvchilarning qiymatlarini, hatto chaqirilmaganda ham biladi.