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 :
let 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 :
let 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 :
let res = 1;
if (true) {
let res = 2;
console.log(res); // affichera 2
}
console.log(res); // affichera 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 :
let age = 17;
let adult;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);
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 :
let age = 17;
let adult;
if (age >= 18) {
adult = true;
} else {
let adult = false;
}
console.log(adult);
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 :
let 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);
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 :
let 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);