Je sais que dans php 5.3 au lieu d'utiliser cette syntaxe d'opérateur ternaire redondante:
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 une sténographie?
javascript
ternary-operator
Web_Designer
la source
la source
||
au lieu de??
?||
opérateur de JS ne renvoie ni vrai ni faux, il renvoie la première valeur «véridique». Dites que vous avezval0
etval1
commeundefined
, etval2
est2
,val3
est3
.val0 || val1 || val2 || val3
reviendra2
, car c'est la première valeur de «vérité».||
retournera la première valeur de vérité qu'il rencontre, et peut donc être utilisé comme opérateur de fusion, similaire à C #??
la source
Oui il y a:
En général,
expr1 || expr2
fonctionne de la manière suivante (comme mentionné dans la documentation ):la source
if a is truthy
vs.if a is evaluated to true
?Dans ce cas, vous pouvez utiliser l'opérateur OR.
la source
Si vous avez une condition avec null, comme
vous pouvez utiliser '&&'
la source
anything && null
évalué à null à moins qu'il neanything
soit faux?Les réponses ci-dessus sont correctes. En JavaScript, la déclaration suivante:
peut être exprimé comme
Un autre scénario non couvert ici est si vous souhaitez que la valeur renvoie false lorsqu'elle ne correspond pas. Le raccourci JavaScript pour cela est:
Mais cela peut être exprimé comme
Je voulais juste couvrir un autre scénario au cas où d'autres rechercheraient une réponse plus générale.
la source
x = innerWidth * 0.0375 > 24 ? innerWidth * 0.0375 : 24
???innerWidth * 0.0375 > 24
diffère de laif true
partie qui estinnerWidth * 0.0375
. Le raccourci ne peut être utilisé que si lesexpression to be evaluated
et lesif true
ont la même valeur. Même pourquoi vous ne seriez pas capable de sténographierx = someBoolean ? 'Heck yea!' : 'No way!'
.Math.max(innerWidth * 0.0375, 24)
Math.max
fonctionne mieux qu'un opérateur ternaire dans votre cas d'utilisation.startingNum = startingNum ? otherNum : 1
peut être exprimé parstartingNum = otherNum || 1
" est faux. je viens de tester ceciPour faire un ternaire comme:
en javascript, vous pouvez faire:
Exemple:
la source
x = innerWidth * 0.0375 > 24 ? innerWidth * 0.0375 : 24
deviendrait(innerWidth * 0.0375 > 24 && innerWidth * 0.0375) || 24
?? y a-t-il un raccourci, de sorte que je n'ai pas à répéterinnerWidth * 0.0375
, autre que l'assigner à une variable ???Math.max( innerWidth * 0.0375 , 24 )
fonctionnerait avec élégance. Pour un cas plus général, il serait bon de créer une méthode descriptive appelée par exemple «somethingifiedInnerWidth» qui améliore la lisibilité, plutôt que de créer une variable. Bien que dans certains cas, il serait plus lisible d'avoir une variable (de ce nom descriptif), alors à l'avenir la question «pourquoi est-elle multipliée par ceci? n'est pas soulevé.Math.max
. solution super élégante !!