L'operateur || en JavaScript - définir une valeur par défaut
L'opérateur || permet de faire un ou logique dans une condition :
Ce que l'on sait moins c'est que cet opérateur peut aussi servir à donner une valeur par défaut. Dans mon explication de l'instruction !! (double négation) je vous ai expliqué que certaines valeurs retournent false :
var falses = [
false,
undefined, // valeur retourné lorsqu'on tente d'accéder à une variable/propriété inexistante
null,
0,
''
];
En fait l'opérateur || retourne ce qui n'est pas faux entre deux valeurs ; cela peut être true mais aussi n'importe quelle valeur qui ne retourne pas false.
On peut ainsi utiliser cet opérateur pour assigner des valeurs par défaut :
var setValue = function(value){
value = value || 'ok';
Sys.Debug.trace(value);
}
setValue('pouet') // ==> pouet
setValue(null) // ==> ok
setValue() // ==> ok car le paramètre vaudra undefined donc sera évalué à false
Attention false, '', 0 et null sont évalué à false. Cet astuce peut donc causer des bugs dans certains cas, à utiliser avec précautions.
setValue(false) // ==> ok
setValue('') // ==> ok
setValue(0) // ==> ok
A noter que l'on peut également chainer cet opérateur :
var fnc = function(val1, val2, val3){
var val = val1 || val2 || val3;
Sys.Debug.trace(val);
}
La première valeur correcte sera alors retenue.