JavaScript - Combiner plusieurs conditions

Une seule condition ne suffit pas toujours : un utilisateur doit être majeur et avoir un billet, un joueur gagne avec un gros score ou un bonus. Les opérateurs logiques &&, || et ! permettent de combiner plusieurs tests dans une seule condition.

    4ttr 5ttr 6ttr
  • niveau

Les trois opérateurs logiques

Opérateur Lecture Vrai quand…
&& ET les deux conditions sont vraies
|| OU au moins une condition est vraie
! NON la condition est fausse (négation)

&& — ET (les deux à la fois)

let age = 20;
let aBillet = true;

if (age >= 18 && aBillet) {
    console.log("Entrée autorisée");
}

Lecture : "si l'âge est ≥ 18 et que la personne a un billet, alors..."

Si une seule des deux conditions est fausse, le tout est faux.

   condition 1   ET   condition 2
       vrai            vrai
         \              /
          résultat : vrai

|| — OU (au moins une)

let role = "admin";
let age = 17;

if (role === "admin" || age >= 18) {
    console.log("Accès autorisé");
}

Lecture : "si l'utilisateur est admin ou qu'il est majeur..."

Il suffit qu'une seule condition soit vraie. Les deux peuvent l'être aussi, ça reste vrai.


! — NON (négation)

! inverse une valeur booléenne : !true devient false, et inversement.

let estConnecte = false;

if (!estConnecte) {
    console.log("Veuillez vous connecter");
}

Lecture : "si non connecté..."

! se lit souvent comme "pas" ou "non" devant la variable.


Combiner plusieurs opérateurs

On peut chaîner autant d'opérateurs que nécessaire. Les parenthèses rendent la logique explicite :

let age = 20;
let aBillet = true;
let estVIP = false;

if ((age >= 18 && aBillet) || estVIP) {
    console.log("Entrée autorisée");
}

Lecture : "un VIP entre toujours ; sinon il faut être majeur et avoir un billet."

Conseil : dès qu'on combine && et ||, mets des parenthèses. Sans elles, && a priorité sur || (comme * sur + en maths) — c'est une source classique de bugs. Les parenthèses ne coûtent rien et rendent l'intention évidente.


L'évaluation est paresseuse

JavaScript évalue les conditions de gauche à droite et s'arrête dès qu'il connaît le résultat :

if (utilisateur && utilisateur.nom === "Alice") {
    // ...
}

Si utilisateur est null ou undefined, la première partie est fausse, et la deuxième n'est pas évaluée. Sans cela, on aurait une erreur en lisant .nom sur null.

C'est une astuce courante : tester l'existence avant d'utiliser une propriété.


Exemples concrets

Contrôle d'accès

let role = "membre";
let estActif = true;
let estBanni = false;

if ((role === "admin" || role === "membre") && estActif && !estBanni) {
    console.log("Accès autorisé");
}

Validation de formulaire

let email = "alice@example.com";
let motDePasse = "secret123";

if (email !== "" && motDePasse.length >= 8) {
    console.log("Formulaire valide");
} else {
    console.log("Champs manquants ou trop courts");
}

Jeu : bonus

let score = 150;
let aPotion = true;
let aClef = false;

// On accède au boss si on a un gros score, OU si on a une potion ET une clef
if (score >= 200 || (aPotion && aClef)) {
    console.log("Boss débloqué !");
}

À retenir

  • && = ET — vrai si toutes les conditions sont vraies.
  • || = OU — vrai si au moins une condition est vraie.
  • ! = NON — inverse vrai/faux.
  • Quand on mélange && et ||, toujours des parenthèses.
  • L'évaluation s'arrête dès que le résultat est connu (évaluation paresseuse). Utile pour tester l'existence d'une variable avant de l'utiliser.

Pour aller plus loin