w3schools ternario operator operador multiple condicionales anidado javascript jshint

operator - En Javascript, ¿está bien colocar el operador ternario `?` En la siguiente línea?



operador ternario php (4)

Debes poner el operador al final de la línea. De esa manera es más claro que la declaración continuó hasta la siguiente línea.

Me gusta mucho alinear el? y el: de mi operador ternario cuando no caben en una línea, como este:

var myVar = (condition ? ifTrue : ifFalse );

Sin embargo, JSHint queja con:

Mala línea que se rompe antes de ''?''

¿Por qué JSHint tendría esta advertencia? ¿Hay alguna repugnancia (como la inserción de punto y coma, etc.) contra la que me esté protegiendo o puedo cambiar mi configuración JSHINT de forma segura para ignorarla?


Esto funciona y es ciertamente válido. Es especialmente útil en casos de uso más complicados, como los anidados.

var a = test1 ? b : test2 ? c : d;


Per Crockford

El operador ternario puede ser visualmente confuso, entonces? el signo de interrogación siempre comienza una línea y aumenta la sangría en 4 espacios, y: dos puntos siempre comienza una línea, alineada con la? signo de interrogación. La condición debe ser envuelta en parens.

var integer = function ( value, default_value ) { value = resolve(value); return (typeof value === "number") ? Math.floor(value) : (typeof value === "string") ? value.charCodeAt(0) : default_value; };


ACTUALIZACIÓN : Esta respuesta está desactualizada ahora. Al parecer Crockford cambia de opinión;)

Vea la answer @ CheapSteaks para la actualización.

Per Crockford :

Coloque el descanso después de un operador, idealmente después de una coma. Una interrupción después de que un operador disminuya la probabilidad de que un error de copiar y pegar se enmascare mediante la inserción de punto y coma.

Asi que:

// this is ok var myVar = (condition ? ifTrue : ifFalse );

Si ejecuta este código de ejemplo a través de JSHint, esto pasará:

// this is ok var myVar = (1==1 ? true : false );