Portée des variables dans if-else en JavaScript
Pour simplifier, prenons une condition qui est toujours vraie :
if (true) {
}
Examinons le code suivant :
if (true) {
let res = '!';
}
console.log(res);
Comme vous le voyez, la valeur '!'
devrait être assignée à la variable res. Cependant,
si vous exécutez ce code, une erreur s'affichera
dans la console !
Le fait est que les variables déclarées à l'intérieur des accolades ne sont visibles qu'à l'intérieur de ces accolades, et ne sont pas visibles à l'extérieur. Scientifiquement, on parle ici de la portée des variables.
On peut dire que la portée des variables déclarées à l'intérieur des accolades se limite à ces accolades. Cependant, si une variable est déclarée à l'extérieur des accolades, elle est visible à la fois à l'intérieur et à l'extérieur :
let res; // variable déclarée à l'extérieur
if (true) {
res = '!';
}
console.log(res); // affichera '!'
Dans l'exemple suivant, soit la valeur 1, soit la valeur 2
est assignée à la variable res
en fonction de la condition :
let num = 5;
if (num >= 0) {
let res = 1;
} else {
let res = 2;
}
console.log(res);
Cependant, si vous exécutez ce code, une erreur s'affichera dans la console. Comme vous le comprenez maintenant, tout est une question de visibilité des variables. Pour résoudre le problème, déclarons la variable en dehors de la condition :
let test = true;
let res; // déclarons la variable en dehors de la condition
if (test) {
res = 1;
} else {
res = 2;
}
console.log(res); // affichera 1
L'auteur du code ci-dessous voulait vérifier
si l'âge était supérieur ou égal à 18
ans. Le code, cependant, ne fonctionne pas. Corrigez
l'erreur de l'auteur du code. Voici le code problématique :
let age = 17;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);