Pour exécuter du code de manière conditionnelle en JavaScript, on utilise couramment l'instruction if.
Elle se compose du mot-clé if, d'une condition entre parenthèses et d'un bloc de code entre accolades.
Le bloc de code n'est exécuté que si la condition est évaluée à true.
if (condition) {
// code that is executed if "condition" is true
}
Elle peut s'utiliser seule ou être combinée avec le mot-clé else.
if (condition) {
// code that is executed if "condition" is true
} else {
// code that is executed otherwise
}
if imbriquéesPour imbriquer une autre condition dans l'instruction else, tu peux utiliser else if.
Note qu'il n'existe pas de mot-clé elseif en JavaScript.
À la place, écris else suivi d'une autre instruction if.
if (condition1) {
// code that is executed if "condition1" is true
} else if (condition2) {
// code that is executed if "condition2" is true
// but "condition1" was false
} else {
// code that is executed otherwise
}
En théorie, on peut imbriquer autant de conditions supplémentaires que l'on veut.
En pratique, on utiliserait plutôt une instruction switch dans ces cas-là.
if (condition1) {
// ...
} else if (condition2) {
// ...
} else if (condition3) {
// ...
} else if (condition4) {
// ...
} else {
// ...
}
Lorsque tu construis des conditions complexes, réfère-toi à la table de priorité des opérateurs pour éviter des parenthèses inutiles.
if (num >= 0 && num < 1) {
// ...
}
// The inner brackets are obsolete because relational operators
// have higher precedence than logical operators.
<!-- prettier-ignore-start -->
if ((num >= 0) && (num < 1)) {
// ...
}
<!-- prettier-ignore-end -->
Pense aussi à utiliser des variables supplémentaires pour rendre le code plus lisible.
const isPositive = num >= 0;
const isSmall = num < 1;
if (isPositive && isSmall) {
// ...
}
En JavaScript, la condition ne doit pas nécessairement être de type booléen.
Si une valeur d'un autre type que booléen est fournie dans un contexte booléen comme l'instruction if, JavaScript convertit implicitement cette valeur en booléen.
Consulte le concept de conversion de type pour savoir quelles valeurs sont truthy et lesquelles sont falsy.
const num = 4;
if (num) {
// this code block will be executed because 4 is truthy
}
Si tu ne veux exécuter qu'une seule instruction dans le bloc de code d'un if ou d'un else, il est possible en JavaScript d'omettre les accolades.
if (condition) doSomething();
// or
if (condition)
doSomething();
On l'utilise parfois, par exemple, pour vérifier une condition d'erreur. En général, ce n'est pas recommandé, car il est facile d'oublier de remettre les accolades quand on ajoute une deuxième instruction qui devrait dépendre de la même condition.
Quand on écrit des fonctions, il est courant d'omettre le bloc else et d'utiliser un return anticipé dans le bloc if à la place.
Dans de nombreux cas, cela réduit l'imbrication et rend le code plus lisible et plus facile à suivre.
function checkNumber(num) {
let message = '';
if (num === 0) {
message = 'You passed 0, please provide another number.';
} else {
message = 'Thanks for passing such a nice number.';
}
return message;
}
// Can also be written as ...
function checkNumber(num) {
if (num === 0) {
return 'You passed 0, please provide another number.';
}
return 'Thanks for passing such a nice number.';
}