Accès aux variables externes des fonctions en JavaScript

Examinons le code suivant :

javascriptlet num = 1; // définir la valeur de la variable

function func() {
  console.log(num); // l'afficher dans la console
}

func(); // appeler la fonction

Comme je l'ai mentionné précédemment, la valeur de la variable n'a pas nécessairement besoin d'être avant la définition de la fonction, l'important est qu'elle soit avant son appel :

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

let num = 1;
func();

En réalité, ce n'est pas tout à fait vrai. Notre fonction connaît la valeur de la variable num même avant son appel :

javascriptlet num = 1;

function func() {
  console.log(num); // la fonction sait déjà que num = 1
}

Voici un exemple plus complexe :

javascriptlet num = 1; // la fonction apprend à ce moment que num = 1

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

num = 2; // la fonction apprend à ce moment que num = 2

Ajoutons des appels de fonction :

javascriptlet num = 1; // la fonction apprend à ce moment que num = 1
func(); // affichera 1

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

func(); // affichera 1
num = 2; // la fonction apprend à ce moment que num = 2
func(); // affichera 2

Encore une fois : en réalité, la fonction connaît les valeurs des variables externes, même sans avoir été appelée.