web-dev-qa-db-fra.com

Opérateur ternaire Javascript

Je sais que dans PHP 5.3 au lieu d'utiliser cette syntaxe d'opérateur ternaire redondant:

startingNum = startingNum ? startingNum : 1

... nous pouvons utiliser une syntaxe abrégée pour nos opérateurs ternaires, le cas échéant:

startingNum = startingNum ?: 1

Et je connais l'opérateur ternaire en javascript:

startingNum = startingNum ? startingNum : 1

... mais y a-t-il un raccourci?

Merci les gars!

76
Web_Designer
var startingNumber = startingNumber || 1;

Quelque chose comme ce que vous cherchez, où il est par défaut si non défini?

var foo = bar || 1; // 1
var bar = 2;
foo = bar || 1;     // 2

À propos, cela fonctionne pour beaucoup de scénarios, y compris les objets:

var foo = bar || {}; // secure an object is assigned when bar is absent
129
Brad Christie

|| renverra la première valeur de vérité rencontrée, et peut donc être utilisé comme opérateur de fusion, similaire au ?? de C #

startingNum = startingNum || 1;
18
Adam Rackis

Oui il y a:

var startingNum = startingNum || 1;

En général, expr1 || expr2 fonctionne de la manière suivante (comme indiqué par la documentation ):

Renvoie expr1 s'il peut être converti en true; sinon, retourne expr2. Ainsi, lorsqu'il est utilisé avec les valeurs Boolean, || renvoie true si l'un des opérandes est true; si les deux sont false, retourne false.

10
Tadeck
var startingNum = startingNum || 1;

Dans ce cas, vous pouvez utiliser l'opérateur OR.

1
Daniel
startingNum = startingNum || 1

Si vous avez une condition avec null, comme 

startingNum = startingNum ? startingNum : null

vous pouvez utiliser '&&'

startingNum = startingNum && startingNum
1
a2441918

Les réponses ci-dessus sont correctes. En JavaScript, la déclaration suivante:

startingNum = startingNum ? otherNum : 1

peut être exprimé comme 

startingNum = otherNum || 1

Un autre scénario non couvert ici est si vous voulez que la valeur retourne false si elle ne correspond Le raccourci JavaScript pour cela est:

startingNum = startingNum ? otherNum : 0

Mais cela peut être exprimé par 

startingNum = startingNum && otherNum

Je voulais juste couvrir un autre scénario au cas où d'autres chercheraient une réponse plus généralisée.

1
John Pace

Pour faire un ternaire comme:

boolean_condition ? true_result : false_result

en javascript, vous pouvez faire:

(boolean_condition && true_result ) || false_result;

Exemple:

(true && 'green') || 'red';
=> "green"
(false && 'green') || 'red';
=> "red"
0
xxjjnn