| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Statements/if...else | [Back] [Original] |
Get to know MDN better
Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.
Cette fonctionnalit est bien tablie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
L'instruction ifelse excute une instruction si une condition donne est quivalente vrai. Si la condition est quivalente faux, ce sera l'instruction de la clause optionnelle else qui sera excute.
function testNum(a) {
let result;
if (a > 0) {
result = "positive";
} else {
result = "NOT positive";
}
return result;
}
console.log(testNum(-5));
// Expected output: "NOT positive"
if (condition)
instruction1
// Avec une clause else
if (condition)
instruction1
else
instruction2
conditionUne expression qui sera value pour dterminer si elle est quivalente vrai (truthy en anglais) ou quivalente faux (falsy en anglais).
instruction1L'instruction qui est excute si la condition est quivalente vrai. Cette instruction peut tre n'importe quelle instruction valide, y compris une imbrication d'autres instructions if. Pour excuter plusieurs instructions, on pourra utiliser un bloc d'instructions ({ /* */ }) qui permet de les regrouper. Pour n'excuter aucune instruction, on pourra utiliser l'instruction vide.
instruction2Si la clause else existe, ce sera l'instruction qui est excute si la condition est quivalente faux. Comme pour la premire, cette instruction peut tre n'importe quelle instruction valide : une autre instruction if imbrique, un bloc d'instruction, une instruction vide, etc.
Plusieurs instructions ifelse peuvent tre imbriques afin de crer une structure else if (on notera qu'il n'y a pas de mot-cl elseif en JavaScript).
if (condition1)
instruction1
else if (condition2)
instruction2
else if (condition3)
instruction3
//
else
instructionN
Si on indente correctement le code, on retrouve la structure exactement quivalente :
if (condition1)
instruction1
else
if (condition2)
instruction2
else
if (condition3)
instruction3
//
Afin d'excuter plusieurs instructions, on utilisera un bloc d'instructions ({ /* */ }) pour regrouper les instructions souhaites.
if (condition) {
instructions1;
} else {
instructions2;
}
Ne pas utiliser de blocs d'instructions pourra causer des comportements droutants, notamment si le code est format la main. Prenons le fragment de code qui suit par exemple :
function verifierValeur(a, b) {
if (a === 1)
if (b === 2)
console.log("a vaut 1 et b vaut 2");
else
console.log("a ne vaut pas 1");
}
Ce code semble relativement innocent. Toutefois, si on excute verifierValeur(1, 3), la console affichera "a ne vaut pas 1". En effet, la clause else sera connecte la clause if la plus proche. Autrement dit, si le code ci-avant avait t correctement indent, on aurait eu :
function verifierValeur(a, b) {
if (a === 1)
if (b === 2)
console.log("a vaut 1 et b vaut 2");
else
console.log("a ne vaut pas 1");
}
Note : On appelle ceci le problme du dangling else.
De manire gnrale, c'est une bonne pratique que de toujours utiliser des blocs d'instructions, notamment si le code implique plusieurs if imbriqus.
function verifierValeur(a, b) {
if (a === 1) {
if (b === 2) {
console.log("a vaut 1 et b vaut 2");
}
} else {
console.log("a ne vaut pas 1");
}
}
Attention ne pas confondre les valeurs boolennes primitives true et false avec les valeurs construites avec un objet Boolean (par exemple Boolean(false) et Boolean(true)). Toute valeur qui n'est pas false, undefined, null, 0, -0, NaN ou la chane vide (""), et tout objet, y compris un objet Boolean dont la valeur est false, seront considrs comme quivalent true dans une instruction conditionnelle if. Ainsi :
const b = new Boolean(false);
if (b) {
console.log("b est quivalent vrai"); // "b est quivalent vrai"
}
ifelseif (toto === titi) {
resultat += increment;
compteur++;
} else {
resultat += increment;
}
else ifBien qu'il n'y ait pas de mot-cl elseif en JavaScript, il est possible d'imbriquer des instructions ifelse la suite les unes des autres en plaant un espace entre else et le dbut de l'instruction if imbrique :
if (x > 50) {
// faire quelque chose
} else if (x > 5) {
// faire autre chose
} else {
// faire encore autre chose
}
Il est conseill de ne pas utiliser d'affectation au sein des expressions conditionnelles. En effet, l'affectation peut tre confondue avec un test d'galit lorsqu'on analyse le code. Il ne faut donc pas utiliser le code suivant (bien qu'il fonctionne) :
if (x = y) {
// faire quelque chose
}
Si vous devez affecter une variable de cette faon, la documentation sur l'instruction while contient une section sur l'affectation dans une condition et un exemple de la syntaxe privilgier dans ces cas.
| Spcification |
|---|
| ECMAScript 2027 LanguageSpecification # sec-if-statement |
Cette page a t modifie le 17 fvr. 2025 par les contributeurices du MDN.
Certaines parties de ce contenu sont protges par le droit d'auteur 19982026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.
| Web Proxy Viewer | New URL | Original Page |