Foros del Web » Programando para Internet » Javascript »

¿Qué significan estos símbolos aquí?

Estas en el tema de ¿Qué significan estos símbolos aquí? en el foro de Javascript en Foros del Web. Por Internet he dado con una función que hace algunas operaciones pero no entiendo que significan algunos símbolos en ese contexto. Os lo dejo aquí ...
  #1 (permalink)  
Antiguo 20/03/2015, 12:24
Avatar de Germano6  
Fecha de Ingreso: mayo-2013
Mensajes: 61
Antigüedad: 11 años
Puntos: 0
Pregunta ¿Qué significan estos símbolos aquí?

Por Internet he dado con una función que hace algunas operaciones pero no entiendo que significan algunos símbolos en ese contexto. Os lo dejo aquí para que lo veáis:

Código Javascript:
Ver original
  1. b*c/((a=(2-b)*c)<1?a:2-a)
¿Asignaciones, interrogaciones, etc? No entiendo. ¿Qué significa?
__________________
Simple principiante. Déjame las cosas claras y no me preguntes.
  #2 (permalink)  
Antiguo 20/03/2015, 12:46
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 8 meses
Puntos: 578
Respuesta: ¿Qué significan estos símbolos aquí?

Se llama operador condicional. Funciona prácticamente igual que una sentencia if...else, solo que actúa como un operador y es más abreviado.

Lo de la asignación y comparación a la vez es bastante frecuente usarla:

Código Javascript:
Ver original
  1. console.log(a = 1); // 1
  2. console.log(a = 2); // 2
  #3 (permalink)  
Antiguo 20/03/2015, 12:56
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: ¿Qué significan estos símbolos aquí?

Desglosemos esa línea:

1. b*c: Es la multiplicación del valor de la variable b con el de la variable c.

2. (a=(2-b)*c): Primero, resta 2 con el valor de la variable b y lo multiplica por el valor de la variable c para finalmente asignarlo a la variable a.

3. ((a=(2-b)*c)<1?a:2-a): Estos son operadores ternarios, los cuales actúan así:
Código Javascript:
Ver original
  1. condición ? caso positivo : caso negativo
Es una manera de trabajar con condiciones en una sola línea, en lugar de usar la tradicional estructura if.
Entonces, si el valor de la variable a (que obtuvimos en el punto anterior) es menor a 1, se tomará el valor de la variable a, caso contrario, se tomará el valor resultante de la resta de 2 menos el valor de la variable a.

4. b*c/((a=(2-b)*c)<1?a:2-a): Al haber primero multiplicado a b por c y luego haber evaluado el valor de a, dividimos ambos resultados.

Eso es todo.

La manera extendida sería así:

Código Javascript:
Ver original
  1. var aux1 = b * c,
  2.     a = (2 - b) * c,
  3.     aux2, aux3;
  4.  
  5. if (a < 1){
  6.     aux2 = a;
  7. }
  8. else{
  9.     aux2 = 2 - a;
  10. }
  11.  
  12. aux3 = aux1 / aux2; //Esto es igual a: b*c/((a=(2-b)*c)<1?a:2-a)

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #4 (permalink)  
Antiguo 20/03/2015, 12:57
Avatar de Germano6  
Fecha de Ingreso: mayo-2013
Mensajes: 61
Antigüedad: 11 años
Puntos: 0
Respuesta: ¿Qué significan estos símbolos aquí?

Cita:
Iniciado por PHPeros Ver Mensaje
Se llama operador condicional. Funciona prácticamente igual que una sentencia if...else, solo que actúa como un operador y es más abreviado.

Lo de la asignación y comparación a la vez es bastante frecuente usarla:

Código Javascript:
Ver original
  1. console.log(a = 1); // 1
  2. console.log(a = 2); // 2
Ok, lo de los condicionales lo he entendido, ¿pero que pinta un = ahí? Es que no entiendo lo que quieres decir con lo de "la asignación y comparación a la vez es bastante frecuente usarla".
__________________
Simple principiante. Déjame las cosas claras y no me preguntes.
  #5 (permalink)  
Antiguo 20/03/2015, 12:59
Avatar de Germano6  
Fecha de Ingreso: mayo-2013
Mensajes: 61
Antigüedad: 11 años
Puntos: 0
Respuesta: ¿Qué significan estos símbolos aquí?

Cita:
Iniciado por Alexis88 Ver Mensaje
Desglosemos esa línea:

1. b*c: Es la multiplicación del valor de la variable b con el de la variable c.

2. (a=(2-b)*c): Primero, resta 2 con el valor de la variable b y lo multiplica por el valor de la variable c para finalmente asignarlo a la variable a.

3. ((a=(2-b)*c)<1?a:2-a): Estos son operadores ternarios, los cuales actúan así:
Código Javascript:
Ver original
  1. condición ? caso positivo : caso negativo
Es una manera de trabajar con condiciones en una sola línea, en lugar de usar la tradicional estructura if.
Entonces, si el valor de la variable a (que obtuvimos en el punto anterior) es menor a 1, se tomará el valor de la variable a, caso contrario, se tomará el valor resultante de la resta de 2 menos el valor de la variable a.

4. b*c/((a=(2-b)*c)<1?a:2-a): Al haber primero multiplicado a b por c y luego haber evaluado el valor de a, dividimos ambos resultados.

Eso es todo.

La manera extendida sería así:

Código Javascript:
Ver original
  1. var aux1 = b * c,
  2.     a = (2 - b) * c,
  3.     aux2, aux3;
  4.  
  5. if (a < 1){
  6.     aux2 = a;
  7. }
  8. else{
  9.     aux2 = 2 - a;
  10. }
  11.  
  12. aux3 = aux1 / aux2; //Esto es igual a: b*c/((a=(2-b)*c)<1?a:2-a)

Saludos
Vale gracias, creo que ya he entendido. Aunque no sabía que eso se pudiera hacer con las asignaciones.
__________________
Simple principiante. Déjame las cosas claras y no me preguntes.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:51.