Aclarando Dudas en JavaScript
¿Cuál es la diferencia entre los Comparadores Estrictos y No Estrictos en JavaScript?
Esta pregunta suele ser muy frecuente entre mis alumnos en JavaScript. Sin embargo, también la he visto realizarce en varios foros. Al parecer, crea bastante confusión y más aún en aquellos desarrolladores novatos y algunos programadores olvidadizos. Bueno, vayamos al grano.
Se puede decir a modo groso que un Comparador Estricto realiza una comparación de Tipos de Datos mientras que un Comparador No Estricto lo hace en función a los valores. Recordemos que en el lenguaje de JavaScript, se basa en un paradigma Orientado a Objetos y fundamentado en el Protitpado de Objetos. También, se trata de un lenguaje débilmente tipado. Por tanto, este lenguaje incorpora tipos de comparaciones conocidos con los términos de Falsly y Truthly. Analicémos unos ejemplos sencillos para comprender mejor.
Comparación No Estricta
1 == "1" // Esto es verdadero - true
'' == 0 // Esto es verdadero - true
false == 0 // Esto es verdadero - true
'' == 0 // Esto es verdadero - true
false == 0 // Esto es verdadero - true
Comparación Estricta
1 === "1" // Esto es falso - false
'' === 0 // Esto es falso - false
false === 0 // Esto es falso - false
'' === 0 // Esto es falso - false
false === 0 // Esto es falso - false
Un contraste de comparaciones entre palabras clave:
null == undefined // Esto es verdadero - true
null === undefined // Esto es falso - false
null === undefined // Esto es falso - false
Explicación
En el ejemplo de las comparaciones No Estrictas, podremos observar que lo que se está comparando son efectivamente "valores". Por tanto, el valor de 1, tomándolo simplemente como un valor, es igual al 1 que se encuentra contenido dentro de la cadena "1". Quizá aquí lo desconcertante es el comportamiento de '' == 0. Esto se debe a la regla Falsly que considera al 0, false y "" o '' (cadena vacía) como equivalentes entre si. Por tanto, en el proceso de comparación No Estricta, su resultante es igual a true "verdadero". Así mismo sucede con false == 0.
Sin embargo, en el caso de comparaciones Estrictas, observamos que sucede el caso inverso. La regla utilizada por las comparaciones Estrictas es Truthly. La regla Truthly fuerza a un proceso de comparación de tipos. Ello quiere decir que su proceso de comparación es más específico basándose en el tipo de datos. Por tanto, si comparamos 1 === "1" la resultante es false debido a que un número no puede ser igual una cadena. Ambos son diferentes tipos de datos.
Bueno, espero haber dejado en claro este menudo dilema y haber sido de utilidad.
Hasta pronto.
- Ariel.
No hay comentarios:
Publicar un comentario