Adgang til eksterne variabler af funktioner i JavaScript

Lad os se på følgende kode:

javascriptlet num = 1; // sæt variabelværdi

function func() {
  console.log(num); // udskriv den i konsollen
}

func(); // kald funktionen

Som jeg allerede har nævnt tidligere, behøver variabelværdien ikke nødvendigvis at være før definitionen af funktionen, det vigtigste er, at den står før dens kald:

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

let num = 1;
func();

Faktisk er det ikke helt rigtigt. Vores funktion kender værdien af variablen num selv før dens kald:

javascriptlet num = 1;

function func() {
  console.log(num); // funktionen ved allerede, at num = 1
}

Her er et mere komplekst eksempel:

javascriptlet num = 1; // funktionen finder på dette tidspunkt ud af, at num = 1

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

num = 2; // funktionen finder på dette tidspunkt ud af, at num = 2

Lad os tilføje funktionskald:

javascriptlet num = 1; // funktionen finder på dette tidspunkt ud af, at num = 1
func(); // udskriver 1

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

func(); // udskriver 1
num = 2; // funktionen finder på dette tidspunkt ud af, at num = 2
func(); // udskriver 2

Igen: faktisk kender funktionen værdierne af eksterne variabler, selv uden at være kaldt.