Nuances de la portée des variables dans les structures if-else en JavaScript

La portée des variables présente une certaine nuance. Examinons-la à l'aide d'un exemple. Déclarons à l'extérieur de notre condition une variable res avec une valeur, et à l'intérieur de la condition, modifions cette valeur pour une autre :

javascriptlet res = 1;

if (true) {
  res = 2;
}

console.log(res); // affichera 2

Comme vous le voyez, la variable res a changé à l'intérieur de la condition. Cependant, tout change si à l'intérieur de la condition, on déclare également la variable res via let :

javascriptlet res = 1;

if (true) {
  let res = 2; // déclarons la variable via let
}

console.log(res); // affichera 1, et non 2 !

Ici, tout tient au fait que la déclaration de la variable via let à l'intérieur de la condition a créé une variable locale res.

C'est-à-dire qu'à l'intérieur de la condition, il existe une variable res, et à l'extérieur de la condition - une autre. On peut s'en assurer en affichant la valeur de la variable dans la console à l'intérieur de la condition :

javascriptlet res = 1;

if (true) {
  let res = 2;
  console.log(res); // affichera 2
}

console.log(res); // affichera 1
Задание 1

L'auteur du code ci-dessous voulait effectuer une vérification de l'âge pour atteindre 18 ans. Le code, cependant, quelle que soit la valeur de l'âge, affiche dans la console la valeur undefined. Corrigez l'erreur de l'auteur du code. Voici le code problématique :

javascriptlet age = 17;
let adult;

if (age >= 18) {
  let adult = true;
} else {
  let adult = false;
}

console.log(adult);
Задание 2

L'auteur du code ci-dessous voulait effectuer une vérification de l'âge pour atteindre 18 ans. Après vérification du code, il s'est avéré que si l'âge est égal ou supérieur à 18 ans, alors dans la variable adult est enregistrée true, comme cela devrait être, cependant, si l'âge est inférieur à 18, alors la variable adult a la valeur undefined. Corrigez l'erreur de l'auteur du code.

Voici le code problématique :

javascriptlet age = 17;
let adult;

if (age >= 18) {
  adult = true;
} else {
  let adult = false;
}

console.log(adult);
Задание 3

L'auteur du code ci-dessous voulait effectuer une vérification de l'âge. Le code, cependant, quelle que soit la valeur de l'âge, affiche dans la console la valeur undefined. Corrigez l'erreur de l'auteur du code.

Voici le code problématique :

javascriptlet age = 17;
let res;

if (age >= 18) {
  if (age <= 23) {
    let res = 'de 18 à 23';
  } else {
    let res = 'plus de 23';
  }
} else {
  let res = 'moins de 18';
}

console.log(res);
Задание 4

L'auteur du code ci-dessous voulait effectuer une vérification de l'âge. Le code, cependant, pour une valeur d'âge supérieure à 18 ans, affiche dans la console la valeur undefined. Corrigez l'erreur de l'auteur du code.

Voici le code problématique :

javascriptlet age = 19;
let res;

if (age >= 18) {
  let res;
  
  if (age <= 23) {
    res = 'de 18 à 23';
  } else {
    res = 'plus de 23';
  }
} else {
  res = 'moins de 18';
}

console.log(res);