a transitividad de igualdad de @JavaScript es extraña

He estado leyendoDouglas Crockford'sJavaScript: The Good Parts, y me encontré con este extraño ejemplo que no tiene sentido para mí:

'' == '0'           // false
0 == ''             // true
0 == '0'            // true

false == undefined  // false
false == null       // false
null == undefined   // true

El autor también menciona "nunca usar== y!=. En su lugar, use siempre=== y!== ". Sin embargo, ¿no explica por qué se exhibe el comportamiento anterior? Entonces, mi pregunta es, ¿por qué los resultados anteriores son como son? ¿No se considera la transitividad en JavaScript?

Respuestas a la pregunta(4)

Su respuesta a la pregunta