Por muy sencillo que parezca, determinar si 2 cadenas de texto son iguales tiende a confundir a los programadores  que no tiene claro como Javascript realiza esta comprobación. Generalmente la necesidad de validar que tenemos es si 2 strings contienen el mismo texto o no, pero dependiendo como ejecutemos la sentencia de validación nos determinará la igualdad o no de las mismas.

Javascript tiene 2 tipos de operadores de igualdad.  El operador de igualdad estandar “totalmente compatible” (==), el cual realiza una conversión de tipos de datos cuando los operadores no son del mismo tipo. Por Ejemplo:

1
2
3
4
5
var stringA = "Me voy de viaje";
var stringB = new String("Me voy de viaje");
if (stringA==stringB){
// Algunas sentencias
}

Estas 2 variables contienen la misma serie de caracteres pero difieren de su tipo de dato, mientras que stringB es una instancia del Objeto String, stringA solo contiene una cadena de caracteres. Al realizar la validación, Javascript intenta varias evaluaciones de estos valores y busca por alguna coincidencia (el valor de la cadena que contienen), en este caso la comparación retorna true y “Algunas sentencias” se ejecutarán.

Este tipo de comprobación resulta útil no solo cuando comparemos por el contenido de 2 cadenas de texto, además podemos comparar una cadena de texto con el valor numérico de otra variable. Por ejemplo:

1
2
3
4
var stringA = "1";
if (stringA==1){
// Algunas sentencias
}

Aquí también nos ejecutará “Algunas sentencias” por la transformación de tipo de datos, en este caso la cadena se transforma a su valor entero, es como si realizaramos la comprobación de la forma:

1
2
3
4
var stringA = "1";
if (parseInt(stringA)==1){
// Algunas sentencias
}

El otro tipo de operador es el de igualdad estricta (= = =), el cual no realiza ninguna conversión de tipo de datos, y que compara a nivel de objeto, es decir, que aparte del contenido de la cadena comparará por la igualdad de las demás propiedades . Por lo que en nuestro ejemplo si realizamos una comparación estrcita:

1
2
3
4
5
var stringA = "Me voy de viaje";
var stringB = new String("Me voy de viaje");
if (stringA===stringB){
// Algunas sentencias
}

En este caso no se ejecutará “Algunas sentencias”, ya que aunque tienen el mismo contenido de texto, son 2 objetos diferentes.

 

(Visited 23,603 times, 5 visits today)