Conditions JS

Javascript dispose de manières alternatives pour exprimer les conditions. Celles-ci sont plus utilisées que la syntaxe if/else traditionnelle.

Opérateur ternaire

Les conditions qui définissent deux alternatives utilisent l’opérateur ternaire, ainsi nommé pare qu’il prend trois opérandes : un pour la condition à évaluer, un pour la cas vrai et un pour le cas faux.

La syntaxe est CONDITION ? Cas vrai : Cas faux. Par exemple, les deux structures suivantes sont équivalentes:

let i=10;

// Condition classique
if (i % 2 == 0) {
    console.log("i est pair");
} else {
    console.log("i est impair");
}

// Opérateur ternaire
i % 2 == 0 ? console.log("i est pair") : console.log("i est impair")

Opérateur &&

L’opérateur de conjonction (“ET” logique) est aussi utilisé dans les conditions.

Lorsque deux expressions sont reliées par &&, les deux doivent être vraies pour que la conjonction soit vraie. Donc lorsque JavaScript évalue des expressions reliées par &&, il évalue d’abord la première, et si celle-ci est fausse il ne va pas plus loin car nécessairement toute l’expression sera fausse. À l’inverse, si la première expression est vraie, javascript doit évaluer la deuxième pour déterminer si l’ensemble est vrai ou faux.

Le fait que javascript parcourt ainsi les conjonctions de gauche à droite pour les évaluer nous permet d’utiliser l’opérateur && pour exprimer des conditions.

La syntaxe est donc : CONDITION && Cas vrai. Les deux structures suivantes sont équivalentes:

let i=10;

// Condition classique
if (i % 2 == 0) {
    console.log("i est pair");
} 

// Opérateur &&
i % 2 == 0 && console.log("i est pair") 

Exercice

Réécrivez les conditions suivantes avec l’opérateur && ou ternaire, selon le cas :

const liste1 = []
const var1 = 0
const var2 = {
    actif: true,
    ident:"S33-12B",
    position: [45.61835861911019, -73.60698829870468]
}

if (liste1.length == 0) {
    console.log("la liste1 est vide")
}


if (var1 == 0) {
    console.log("var1 vaut 0")
} else {
    console.log("var1 est différent de 0")
}

if (var1 == 0) {
    var2.position = []
}


if (var2.actif) {
    liste1.push(1)
} else {
    liste1.push(0)
}