235 votes

Définir une variable si elle est indéfinie en JavaScript

Je sais que je peux tester une variable JavaScript et la définir si elle est undefined mais n'y a-t-il pas un moyen de dire

var setVariable = localStorage.getItem('value') || 0;

semble être une façon beaucoup plus claire, et je suis presque sûr d'avoir vu cela dans d'autres langues.

1voto

tiagoboldt Points 1243

Peut-être que cela dépend du navigateur mais cela fonctionne sur ma console chrome :

var gfr
- undefined
gfr
- undefined
var x = (gfr || 0)
- 0
x
- 0

1voto

Zikes Points 1657

var setVariable = (typeof localStorage.getItem('value') !== 'undefined' && localStorage.getItem('value')) || 0;

1voto

Mark Seefeldt Points 118

J'ai également rencontré ce scénario aujourd'hui, où je ne voulais pas que le zéro soit écrasé pour plusieurs valeurs. Nous avons un fichier avec quelques méthodes utilitaires communes pour des scénarios comme celui-ci. Voici ce que j'ai ajouté pour gérer le scénario et être flexible.

function getIfNotSet(value, newValue, overwriteNull, overwriteZero) {
    if (typeof (value) === 'undefined') {
        return newValue;
    } else if (value === null && overwriteNull === true) {
        return newValue;
    } else if (value === 0 && overwriteZero === true) {
        return newValue;
    } else {
        return value;
    }
}

Il peut ensuite être appelé avec les deux derniers paramètres étant facultatifs si je veux seulement définir pour les valeurs indéfinies ou également écraser les valeurs nulles ou 0. Voici un exemple d'appel à cette fonction qui définira l'ID à -1 si l'ID est indéfini ou nul, mais n'écrasera pas une valeur 0.

data.ID = Util.getIfNotSet(data.ID, -1, true);

0voto

Tsz Lam Yau Points 1

Fonctionne même si la valeur par défaut est une valeur booléenne :

var setVariable = ( (b = 0) => b )( localStorage.getItem('value') );

0voto

T S Points 863

Il me semble, que pour les implémentations actuelles de javascript,

var [result='default']=[possiblyUndefinedValue]

est un bon moyen de le faire (en utilisant la déconstruction d'objet).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X