=== y !===
Son operadores de comparación ESTRICTA. Significa que si los operandos tienen TIPOS DIFERENTES, no son iguales.
l1==="1" // false 1!=="1" // true null === undefined // false
== y !==
Son operadores de comparación RELAJADA. Significa que si los operandos tienen TIPOS DIFERENTES, Javascript trata de convertirlos para que fueran comparables.
1=="1" // true 1!="1" // false null == undefined // true
null === undefined // false null == undefined // true null === false // false null == false //false
Detalles del operador ==
La comparación x == y, donde x e y son valores, regresa true o false. Esta comparación se realiza de la siguiente manera:
- Si Type(x) y Type(y) son los mismos,
- Si Type(x) es Undefined, regresa true.
- Si Type(x) es Null, regresa true.
- Si Type(x) es Number,
- Si x es NaN, regresa false.
- Si y es NaN, regresa false.
- Si x es el mismo valor de Number que y, regresa true.
- Si x es +0 e y es −0, regresa true.
- Si x es -0 e y es +0, regresa true.
- Regresa false.
- Si Type(x) es String, regresa true si x e y son exactamente la misma secuencia de caracteres (con la misma longitud y los mismos caracteres en las posiciones correspondientes). En el caso contrario, regresa false.
- Si Type(x) es Boolean, regresa true, si x e y ambos son true o ambos son false. En el caso contrario, regresa false.
- Regresa true si x e y refieren al mismo objeto. En el caso contrario, regresa false.
- Si x es null e y es undefined, regresa true.
- Si x es undefined e y es null, regresa true.
- Si Type(x) es Number y Type(y) es String,
regresa el resultado de la comparación x == ToNumber(y). - Si Type(x) es String y Type(y) es Number,
regresa el resultado de la comparación ToNumber(x) == y. - Si Type(x) es Boolean, regresa el resultado de la comparación ToNumber(x) == y.
- Si Type(y) es Boolean, regresa el resultado de la comparación x == ToNumber(y).
- Si Type(x) es String o Number, y Type(y) es Object,
regresa el resultado de la comparación x == ToPrimitive(y). - Si Type(x) es Object y Type(y) es String o Number,
regresa el resultado de la comparación ToPrimitive(x) == y. - Regresa false.
https://es.stackoverflow.com/questions/331/diferencias-entre-y-comparaciones-en-javascript