poco recibí un comentario en uno de mis blogs sobre JSLint preguntando por qué JSLint arrojó un error con el siguiente: generadaExpresiones en JavaScript ternario del operador y de JSLint
s === "test" ? MyFunc() : MyFunc2();
El error fue:
"Esperaba una asignación o función llamada y en su lugar vio una expresión."
Claramente JSLint está esperando una misión aquí, somthing más como:
var y = (s === "test") ? MyFunc() : MyFunc2();
Pero, yo no veo el problema con el primer ejemplo. ¿Es realmente el caso que los operadores ternarios solo deberían usarse para asignaciones?
No pude ver nada en JSLint.com, ni aparecía nada en el libro JavaScript: The Good Parts. Y, el mismo error también se informa en el fork de la comunidad JSHint.
¿Alguien?
1 para una respuesta desde las poderosas Raynos. Debo admitir que a veces uso expresiones abreviadas en lugar de declaraciones 'if'. Raramente ternario, generalmente algo como 'match && doSomethingWith (match)'. Pero eso es solo porque soy flojo: P En general, creo que hay un par de cosas de las que se queja JSLint que pueden ignorar cuando entran en juego las preferencias personales. –
@Andy E: me doy cuenta de que hay partes de JSLint donde entran en juego las preferencias personales, pero estaba interesado en ver el mismo mensaje enviado por JSHint también. Sin embargo, siempre es bueno saberlo. –
@JamesWiseman JSHint le permite un _lot_ de personalización.Hay una opción 'expr' para suprimir estas advertencias. En mi opinión, los simples '||', '&&' o '?' Están bien, pero puedo ver por qué podrían ser malos. – Raynos