Condicionales en javascript

Miguel-ito

Hola buenas, queria saber si me podriais ayudar en una cosa, me he encontrado con este codigo en un archivo js en el que tengo que hacer una modificación, el archivo es de una libreria de la empresa en la que estoy trabajando, mas o menos puedo seguir las cadenas de condiciones ternarias pero como estan dentro de un if y una de las condiciones es una asignación estoy un poco perdido. Asi que si alguien es tan amable de poder explicarme que hace le estaria muy agradecido



if( c = k ? resultado 1_1 : resultado 1_2 ?  resultado 2_1 : resultado 2_2 ? resultado 3_1 : resultado 3_2 ? resultado 4_1 : resultado 4_2 , resultado 4_3) 
{
    //Resto de codigo aqui
}


Merkury

Basicamente esta anidando ifs de forma ternaria.

1 respuesta
Miguel-ito

#2 Eso lo entiendo, lo que no entiendo es ¿que daria la asiganacion de c = k? y luego que valor devolveria el if de fuera, ¿si algun ternario da true el de fuera da true o por el contrario si todos dan false el de fuera da false?

2 respuestas
gonya707

#3 una asignacion como c=k devuelve true si todo ha ido bien (c existe) o devuelve false si ha habido algo mal al almacenar ese valor

2 3 respuestas
Merkury

#4 #3 Tal cual.

1 respuesta
Miguel-ito

#4 #5 Muy amables :)

Kiroushi

#1 Al que ha escrito ese código habría que quitarle todos y cada un de los títulos que le habiliten para trabajar.

2 2 respuestas
babri

#7 me alegro de no ser el único en pensarlo, gracias.

1 respuesta
Merkury

#7 #8 Exactamente por que? Yo le pegaría una paliza por no comentarlo, pero de hecho es mas eficiente hacer eso que anidar ifs.

3 respuestas
babri

#9 al estar usando operadores ternarios no hace falta meterlo en un if, y se le asigna a una variable generalmente.

1 respuesta
Merkury

#10 No tienes por que meterlo en una variable si esperas un bool como resultado. Asignarlo a una variable es para luego hacer if(var) con lo que te estas ahorrando la variable.

Kiroushi

#9 Haz un jsperf comparando el rendimiento de ambas formas de escribirlo, y me dices si merece la pena hacer esa basura para ganar... ¿un ciclo de reloj?

1 respuesta
Merkury

#12 Eh, igual es la mega aplicación del siglo y ese ciclo de reloj marca la diferencia! haha.
Yo digo que no esta tan mal, lo que pasa que le falta un comentario explicando que hace XD

1 respuesta
babri

1 respuesta
E

no se, yo las ternarias si las he tenido que usar es cuando como mucho toma 3 parametros

Kiroushi

#13 Aún así, el tiempo que le ha hecho perder a #1 teniendo que entender el código ya no merece la pena en términos de coste de mano de obra.

2 respuestas
Merkury

#16 Eso, es una historia diferente.

Miguel-ito

#16 Lo gracioso no es entenderlo, lo gracioso va a ser cuando tenga que pensar en una manera de que en una determinada circunstancia no entre en ese if y no romperlo demasiado como para que deje de funcionar todo lo que haga o deje de hacer esas libreria, si fueran ifs anidados me seria mucho mas facil. Pero bueno en fin gracias a todos por las molestias :)

2 respuestas
gonya707

#18 pon esto de comentario para el que llegue detras

//  ___________.._______
// | .__________))______|
// | | / /      ||
// | |/ /       ||
// | | /        ||.-''.
// | |/         |/  _  \
// | |          ||  `/,|
// | |          (\\`_.'
// | |         .-`--'.
// | |        /Y . . Y\
// | |       // |   | \\
// | |      //  | . |  \\
// | |     ')   |   |   (`
// | |          ||'||
// | |          || ||
// | |          || ||
// | |          || ||
// | |         / | | \
// """"""""""|_`-' `-' |"""|
// |"|"""""""\ \       '"|"|
// | |        \ \        | |
// : :         \ \       : :  
// . . `' . .
7 2 respuestas
DarkSoldier

#19 dios me partiria tanto encontrarme con algo así...... jajajajajajajaa

Hipnos

#19 Qué grande X_D

#14 ¿De qué es la medida?

Kiroushi

#18 Por cierto, lo de #4 no es del todo cierto.

a = b ? no comprueba si la asignación ha tenido éxito, si no que devuelve el resultado de la asignación.

a = false ? devuelve FALSE, aunque la asignación tenga éxito.

2 respuestas
gonya707

#22 ah si? puede ser que varie segun el lenguaje? Tampoco es que yo sea un gurú de JS

1 respuesta
MTX_Anubis

#9 Eficiencia con ifs en el 2014. Ok.

Pues basicamente lo sacas a un método que tenga un nombre aclarativo y listo, no hace falta ni comentarlo porque está autodocumentado. Por no hablar del nombre de variables totalmente descriptivo que tiene (que bueno, si va a ejecutarse en web tiene algo más de sentido si no le pasas un minifier).

#23 En todos los lenguajes que conozco es como dice #22 xD

1 respuesta
DarkSoldier

http://jsfiddle.net/pmocj7jy/

1 respuesta
Nacht

Alguien puede explicar de que va anidar if's :D

#25 Para poner ésa condición, porqué no poner mejor alert(c); y terminas antes?

1 respuesta
Merkury

#24 Pues eso digo.

DarkSoldier

#26 entiendes el post? xDDD

2 respuestas
eXtreM3

#28 y tú? ^^

#1 por el amor de Dios, reprograma esa chapuza.

1 respuesta
Nacht

#28 Nunca me han explicado qué o para qué se usan los if's anidados, tanto cuesta responder una duda?
Menuda torta -_-, no hace falta ni que respondas. Besis <3

2 respuestas