ფუნქციების გარე ცვლადებთან წვდომა 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

კიდევ ერთხელ: სინამდვილეში ფუნქცია იცის გარე ცვლადების მნიშვნელობებს, მაშინაც კი, როცა ის არ არის გამოძახებული.