web-dev-qa-db-fra.com

Ruby's || = (ou égal) en JavaScript?

J'aime Ruby's ||= mécanisme. Si une variable n'existe pas ou est nil, créez-la et définissez-la égale à quelque chose:

amount # is nil
amount ||= 0 # is 0
amount ||= 5 # is 0

Je dois faire quelque chose de similaire en JavaScript maintenant. Quelle est la convention ou la bonne façon de faire cela? Je sais ||= n'est pas une syntaxe valide. Deux manières évidentes de le gérer sont:

window.myLib = window.myLib || {};

// or

if (!window.myLib)
  window.myLib = {};
111
at.

Les deux sont tout à fait corrects, mais si vous cherchez quelque chose qui fonctionne comme ||= en Ruby. La première méthode qui est variable = variable || {} est celui que vous recherchez :)

128
nXqd

Vous pouvez utiliser l'opérateur logique OR || qui évalue son opérande droit si lVal est une valeur de fausseté.

Les valeurs de fausseté incluent, par exemple, null, false, 0, "", undefined, NaN

x = x || 1
20
Moritz Roessler

Si vous travaillez avec des objets, vous pouvez utiliser la déstructuration (depuis ES6) comme suit:

({ myLib: window.myLib = {} } = window);

... mais vous ne gagnez rien par rapport à la réponse acceptée, sauf confusion.

4
Inkling