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.

11voto

mcestone Points 197

J'avais besoin de "définir une variable si indéfinie" à plusieurs endroits. J'ai créé une fonction en utilisant la réponse de @Alnitak. J'espère que cela aidera quelqu'un.

function setDefaultVal(value, defaultValue){
   return (value === undefined) ? defaultValue : value;
}  

Uso:

hasPoints = setDefaultVal(this.hasPoints, true);

6voto

Bruno Points 595

Il semble plus logique de vérifier typeof au lieu de undefined ? Je suppose que vous vous attendez à un nombre, puisque vous avez défini la variable comme suit 0 lorsqu'il n'est pas défini :

var getVariable = localStorage.getItem('value');
var setVariable = (typeof getVariable == 'number') ? getVariable : 0;

Dans ce cas, si getVariable n'est pas un nombre (chaîne de caractères, objet, etc.), setVariable est réglé sur 0

6voto

tarkh Points 1442

De nos jours, vous pouvez réellement faire votre approche avec JS :

// Your variable is null
// or '', 0, false, undefined
let x = null;

// Set default value
x = x || 'default value';

console.log(x); // default value

Donc votre exemple VA fonctionner :

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

2voto

Damian Green Points 1654

Si vous êtes un FP ( programmation fonctionnelle ) fan, Ramda dispose d'une fonction d'aide très utile pour cela, appelée defaultTo :

l'usage :

const result = defaultTo(30)(value)

Il est plus utile lorsqu'il s'agit de undefined valeurs booléennes :

const result2 = defaultTo(false)(dashboard.someValue)

2voto

Trying2Learn Points 11

Vous pouvez utiliser l'une des méthodes suivantes.

let x;
let y = 4;
x || (x = y)

dans l'ES12 ou après

let x;
let y = 4;
x ||= y;

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