Sé que en php 5.3 en lugar de usar esta sintaxis de operador ternario redundante:
startingNum = startingNum ? startingNum : 1
... podemos usar una sintaxis abreviada para nuestros operadores ternarios cuando corresponda:
startingNum = startingNum ?: 1
Y sé sobre el operador ternario en javascript:
startingNum = startingNum ? startingNum : 1
... pero ¿hay una taquigrafía?
javascript
ternary-operator
Diseñador web
fuente
fuente
||
lugar de??
?||
operador de JS no devuelve verdadero o falso, devuelve el primer valor 'verdadero'. Di que tienesval0
yval1
comoundefined
, yval2
es2
,val3
es3
.val0 || val1 || val2 || val3
volverá2
, ya que es el primer valor de "verdad".||
devolverá el primer valor veraz que encuentre y, por lo tanto, se puede usar como un operador de fusión, similar al de C #??
fuente
Sí hay:
En general,
expr1 || expr2
funciona de la siguiente manera (como se menciona en la documentación ):fuente
if a is truthy
vs.if a is evaluated to true
?En este caso, puede utilizar el operador OR.
fuente
Si tiene una condición con nulo, como
puedes usar '&&'
fuente
anything && null
evaluará como nulo a menos queanything
sea falso?Las respuestas anteriores son correctas. En JavaScript, la siguiente declaración:
se puede expresar como
Otro escenario no cubierto aquí es si desea que el valor devuelva falso cuando no coincida. La abreviatura de JavaScript para esto es:
Pero se puede expresar como
Solo quería cubrir otro escenario en caso de que otros estuvieran buscando una respuesta más generalizada.
fuente
x = innerWidth * 0.0375 > 24 ? innerWidth * 0.0375 : 24
???innerWidth * 0.0375 > 24
difiere de laif true
parte que esinnerWidth * 0.0375
. La taquigrafía solo se puede utilizar siexpression to be evaluated
yif true
son el mismo valor. Igual por qué no podría taquigrafíax = someBoolean ? 'Heck yea!' : 'No way!'
.Math.max(innerWidth * 0.0375, 24)
Math.max
funciona mejor que un operador ternario en su caso de uso.startingNum = startingNum ? otherNum : 1
puede expresarse comostartingNum = otherNum || 1
" es incorrecto. acabo de probar estoPara hacer un ternario como:
en javascript, puede hacer:
Ejemplo:
fuente
x = innerWidth * 0.0375 > 24 ? innerWidth * 0.0375 : 24
se convertiría en(innerWidth * 0.0375 > 24 && innerWidth * 0.0375) || 24
?? ¿Existe una taquigrafía, para que no tenga que repetirinnerWidth * 0.0375
, aparte de asignarla a una variable?Math.max( innerWidth * 0.0375 , 24 )
funcionaría con elegancia. Para un caso más general, sería bueno crear un método descriptivo llamado, por ejemplo, 'somethingifiedInnerWidth' que mejora la legibilidad, en lugar de crear una variable. Aunque en algunos casos sería más legible tener una variable (de ese nombre descriptivo), en el futuro la pregunta '¿por qué se multiplica por esto?' no se eleva.Math.max
. solucion super elegante !!