Foros del Web » Programando para Internet » Javascript »

Duda muy noob comparadores

Estas en el tema de Duda muy noob comparadores en el foro de Javascript en Foros del Web. Buenas gente, siempre ingreso aquí para resolver dudas....... Ahora tengo una duda muy noob a ver si pueden ayudarme plz. Les dejo el extracto de ...
  #1 (permalink)  
Antiguo 05/02/2015, 08:21
 
Fecha de Ingreso: febrero-2015
Mensajes: 3
Antigüedad: 9 años, 2 meses
Puntos: 0
Duda muy noob comparadores

Buenas gente, siempre ingreso aquí para resolver dudas....... Ahora tengo una duda muy noob a ver si pueden ayudarme plz.
Les dejo el extracto de cógigo y la parte donde quede cn dudas:
var a = new String( 'foo' );
var b = "foo";
var c = new String( 'foo' );

alert( a == b ); // true
alert( b == c ); // true
alert( a == c ); // false ------->por qué?
alert( a === c ); // false ------->por qué?

Saludos y graciassssssssssssssssssssssssssssssss.
  #2 (permalink)  
Antiguo 05/02/2015, 10:44
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 1 mes
Puntos: 1329
Respuesta: Duda muy noob comparadores

Lo primero es por que como no son literales, no se compara su valor, se compara si es el mismo objeto (y no lo es).

Lo segundo, es por que la comparación estricta se da cuenta de que son tipos de datos distintos:

Código Javascript:
Ver original
  1. console.log(typeof 'foo');
  2. console.log(typeof new String('foo'));

No deberías usar el constructor para definir strings.


Saludos
__________________
Grupo Telegram Docker en Español
  #3 (permalink)  
Antiguo 05/02/2015, 11:35
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 14 años
Puntos: 131
Respuesta: Duda muy noob comparadores

Carlangueitor

Esto que dijiste no me queda muy claro

Lo segundo, es por que la comparación estricta se da cuenta de que son tipos de datos distintos

Porque ambos son objetos y por ende son del mismo tipo

En MDN encontre esto(talvez sea el porque devuelve false)

Two distinct objects are never equal for either strict or abstract comparisons.

Saludos
  #4 (permalink)  
Antiguo 05/02/2015, 11:47
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: Duda muy noob comparadores

Cita:
Iniciado por hackjose Ver Mensaje
En MDN encontre esto(talvez sea el porque devuelve false)

Two distinct objects are never equal for either strict or abstract comparisons.
Y también dice esto:

Cita:
Iniciado por MDN
An expression comparing Objects is only true if the operands reference the same Object.
Si, tomando el ejemplo original, hicieras var x = a y luego un alert(a == x) y un alert(a === x), habrías obtenido true para ambos casos pues x referencia a a, mas no c con a y viceversa.

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
  #5 (permalink)  
Antiguo 05/02/2015, 11:48
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 1 mes
Puntos: 1329
Respuesta: Duda muy noob comparadores

Sí, tienes razón pensé que estaba comparando a y b.

Y bueno, entonces todo es lo mismo, los objetos aunque tengan el mismo "valor" no son el mismo.

Saludos
__________________
Grupo Telegram Docker en Español
  #6 (permalink)  
Antiguo 09/02/2015, 06:22
 
Fecha de Ingreso: febrero-2015
Mensajes: 3
Antigüedad: 9 años, 2 meses
Puntos: 0
Gracias por las respuestas aclararon las dudas.
Saludos!

Última edición por HighR; 09/02/2015 a las 06:36

Etiquetas: noob
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 15:14.