Lo siento si el título no lo dejó claro, pero me he estado preguntando, ¿hay un operador para comparar tipos como null y "null" ?
Todos sabemos eso:
"1" == 1 devuelve verdadero.
y
"1" === 1 devuelve falso.
Pero cuando trato de hacer algo como:
undefined == "undefined" , para mí, devuelve falso, aunque no estoy usando === .
¿Por qué ocurre esto? ¿Existe un operador para comparar undefined y "undefined" , o null y "null" ?, etc...
En respuesta a la pregunta en el título, no, no hay - JavaScript generalmente no examina el contenido semántico de las cadenas - "usar estricto" colocado al comienzo del código para invocar la ejecución en modo estricto es la excepción.
Tenga en cuenta que el operador typeof es un operador de conveniencia que no devuelve el tipo de datos de su operando en todos los casos: los objetos de función son del tipo de datos (JavaScript) "Objeto", y null es del tipo de datos (JavaScript) "Nulo".
"undefined" es un valor de cadena con contenido específico. No es igual a undefined (el único valor con tipo de datos "Indefinido") o null (el único valor con tipo de datos "Nulo").
Sin embargo, existe una conversión de tipo automática entre null e undefined que hace que el operador de igualdad no estricto los trate como iguales, a menudo se usa con un operador de negación:
if( value != null) { // proceed knowing value isn't `undefined` or `null }