elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  [Pregunta]: ¿Qué significa esto (javascript)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Pregunta]: ¿Qué significa esto (javascript)  (Leído 845 veces)
Leguim


Desconectado Desconectado

Mensajes: 674



Ver Perfil
[Pregunta]: ¿Qué significa esto (javascript)
« en: 1 Enero 2020, 03:20 am »

Código
  1. value = value == undefined ? '' : value;
  2.  


En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.605


🏴 Libertad!!!!!


Ver Perfil WWW
Re: [Pregunta]: ¿Qué significa esto (javascript)
« Respuesta #1 en: 1 Enero 2020, 03:24 am »

Operador Ternario

Valor es igual a la evaluación boleana de value == undefined, si es verdadero te devuelve la cadena vacia '', si no lo es te devuelve el valor orginal.

Es para que value siempre tenga un valor valido, valga la redundancia.

imagina el siguiente ejemplo:

Código
  1. largest = ((a > b) ? a : b);
Se evalua si "a" es mayor que "b", Si es verdadero largest se iguala a la variable "a", si no se igual a la variable "b"

basicamente siempre es el mismo formato

Código:
variable = (condición) ? (valor si verdadero) : (valor si falso) ;

Saludos!


« Última modificación: 1 Enero 2020, 03:28 am por AlbertoBSD » En línea

Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW
#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.700



Ver Perfil WWW
Re: [Pregunta]: ¿Qué significa esto (javascript)
« Respuesta #2 en: 1 Enero 2020, 03:24 am »

Es un operador ternario.

https://es.wikipedia.org/wiki/Operador_ternario

Básicamente esta haciendo esto:

Código
  1. if (value == undefined) {
  2.    value = '';
  3. } else {
  4.    value = value;
  5. }


Este en concreto creo que tiene 0 sentido porque se repite mucho pudiendo hacer:

Código
  1. value = value || '';

https://es.wikipedia.org/wiki/Evaluaci%C3%B3n_de_cortocircuito

Saludos
En línea

@XSStringManolo
<svg/onload=alert()>
Colaborador
***
Desconectado Desconectado

Mensajes: 2.279


Turn off the red ligth


Ver Perfil WWW
Re: [Pregunta]: ¿Qué significa esto (javascript)
« Respuesta #3 en: 1 Enero 2020, 03:54 am »

Es un operador ternario.

https://es.wikipedia.org/wiki/Operador_ternario

Básicamente esta haciendo esto:

Código
  1. if (value == undefined) {
  2.    value = '';
  3. } else {
  4.    value = value;
  5. }


Este en concreto creo que tiene 0 sentido porque se repite mucho pudiendo hacer:

Código
  1. value = value || '';

https://es.wikipedia.org/wiki/Evaluaci%C3%B3n_de_cortocircuito

Saludos
No es lo mismo drvy. Puede que a value se le asignara false de valor, 0 o null. Todos ellos equivalen a evaluación negativa y con tu código cambiarías su valor de value 1-1 a ''

Lo que trata el código es de comprobar si un valor se definió. Que por cierto, tampoco es correcto el código. Le falta un = porque se hace conversión de tipos.

value = "undefined" no es lo mismo que value = undefined;
En cambio en ese código de ejemplo se convierten para comparar.

Tampoco es muy eficiente. Para que reasignar un valor si ya lo tiene? Qué pasa si value es un objeto enorme del que depende todo el programa?

value === undefined ? value=0 : 0 ;

Si value contiene el dato primitivo undefined ? asígnale un valor; en caso contrario no hace nada.

En este caso casi que es mejor usar un if:
if (value === undefined) value = 0;

Se entiende mejor, menos código y más eficiente.

Ojo, no sabemos que es value, puedeser un método o una función entre otras cosas. Cundo haces un return de nada dentro de una función o método, se retorna undefined. Asique podría utilizarse para comprobar si por ejemplo una función recibió argumentos/parámetros.

Código
  1. function ej()
  2. {
  3. if (arguments.length === 0)
  4. return;
  5.  
  6. else
  7. {
  8. arguments[0] ...
  9. /*trabajar con argumentos*/
  10. }
  11. }
  12.  
  13. var value = ej();
  14.  
  15. value = ej("hola");
« Última modificación: 1 Enero 2020, 04:04 am por @?0!,5^34 » En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.700



Ver Perfil WWW
Re: [Pregunta]: ¿Qué significa esto (javascript)
« Respuesta #4 en: 1 Enero 2020, 04:21 am »

Citar
No es lo mismo drvy. Puede que a value se le asignara false de valor, 0 o null. Todos ellos equivalen a evaluación negativa y con tu código cambiarías su valor de value 1-1 a ''

Cierto. Eso si, señalar que null también se evalúa como undefined en este caso particular (por lo que comentas de la conversión).

Citar
En este caso casi que es mejor usar un if:
if (value === undefined) value = 0;


Seria lo más correcto si, aunque ese modo de presentarlo es muy feo  :xD


Saludos
En línea

Leguim


Desconectado Desconectado

Mensajes: 674



Ver Perfil
Re: [Pregunta]: ¿Qué significa esto (javascript)
« Respuesta #5 en: 1 Enero 2020, 06:28 am »

Les agradezco sus explicaciones, la función recibía una cadena...

Muchas gracias...
En línea

@XSStringManolo
<svg/onload=alert()>
Colaborador
***
Desconectado Desconectado

Mensajes: 2.279


Turn off the red ligth


Ver Perfil WWW
Re: [Pregunta]: ¿Qué significa esto (javascript)
« Respuesta #6 en: 1 Enero 2020, 08:22 am »

Cierto. Eso si, señalar que null también se evalúa como undefined en este caso particular (por lo que comentas de la conversión).


Seria lo más correcto si, aunque ese modo de presentarlo es muy feo  :xD


Saludos
También comentar que puede ser que se intente acceder a un objeto a través de su referencia y se compare value a Object object en vez de a la propiedad o valor referenciado. Para esos casos hay que usar instanceof.


He estado probando y buscando cosas for fun.

Bites sin contar identación y espacios no imprescindibles.

value = value == undefined ? '' : value;
256bits

if (value === undefined) value = 0;
232bits

if (value == void 0) value=0;
200bits

if (value == [][[]]) value=0;
192bits

value==[][[]]?value=0:0;
192bits

value==[].$?value=0:0
168bits

if(i==[].$)i=0;
120bits

i==[].$?i=0:0
104bits

De 40 caracteres a 13. No parece mucho hasta que haces copia y pega 10 veces en varios condicionales, añades más expresiones al condicional, etc.
Código
  1. <html>
  2. <body>
  3. <script>
  4. var i;
  5. i==[].$?i=0:0
  6.  
  7. alert(i);
  8. </script>
  9. </body>
  10. </html>
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Q significa esto?
Hacking Mobile
#Borracho.- 1 2,981 Último mensaje 17 Noviembre 2005, 21:45 pm
por Gospel
Qué significa esto??
Java
Jess_Kapria 2 1,707 Último mensaje 7 Agosto 2007, 02:22 am
por coolfrog
¿Que significa esto?
Programación Visual Basic
Erik# 9 2,495 Último mensaje 16 Diciembre 2008, 23:39 pm
por Spider-Net
[ASM][?] Que significa esto?
ASM
Erik# 1 3,852 Último mensaje 11 Mayo 2009, 21:45 pm
por Eternal Idol
Que significa este codigo de javascript?
Programación General
BigKaz 1 862 Último mensaje 8 Enero 2017, 07:52 am
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines