Looking for javascript Answers? Try Ask4KnowledgeBase
Looking for javascript Keywords? Try Ask4Keywords

JavaScript Opérateurs logiques avec des valeurs non booléennes (coercition booléenne)


Exemple

Logical OR ( || ), lisant de gauche à droite, évaluera la première valeur de vérité . Si aucune valeur de vérité n'est trouvée, la dernière valeur est renvoyée.

var a = 'hello' || '';             // a = 'hello'
var b = '' || [];                  // b = []
var c = '' || undefined;           // c = undefined
var d = 1 || 5;                    // d = 1
var e = 0 || {};                   // e = {}
var f = 0 || '' || 5;              // f = 5
var g = '' || 'yay' || 'boo';      // g = 'yay'

Logical AND ( && ), en lisant de gauche à droite, évaluera à la première valeur de falsy . Si aucune valeur de falsey n'est trouvée, la dernière valeur est renvoyée.

var a = 'hello' && '';                  // a = ''
var b = '' && [];                       // b = ''
var c = undefined && 0;                 // c = undefined
var d = 1 && 5;                         // d = 5
var e = 0 && {};                        // e = 0
var f = 'hi' && [] && 'done';           // f = 'done'
var g = 'bye' && undefined && 'adios';  // g = undefined

Cette astuce peut être utilisée, par exemple, pour définir une valeur par défaut sur un argument de fonction (antérieur à ES6).

var foo = function(val) {
    // if val evaluates to falsey, 'default' will be returned instead.
    return val || 'default';
}

console.log( foo('burger') );  // burger
console.log( foo(100) );       // 100
console.log( foo([]) );        // []
console.log( foo(0) );         // default
console.log( foo(undefined) ); // default

Gardez juste à l'esprit que pour les arguments, 0 et (dans une moindre mesure) la chaîne vide sont aussi souvent des valeurs valides qui devraient pouvoir être explicitement passées et remplacer une valeur par défaut, ce qui, avec ce modèle, ne le sera pas (parce qu'elles sont fausses ).