A transitividade da igualdade do JavaScript é estranha

Eu tenho lidoDouglas Crockford'sJavaScript: As Boas Peças, e me deparei com este exemplo estranho que não faz sentido para mim:

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

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

O autor também menciona "nunca usar== e!=. Em vez disso, sempre use=== e!== ". No entanto, ele não explica por que o comportamento acima é exibido? Então, minha pergunta é: por que os resultados acima são como são? A transitividade não é considerada em JavaScript?

questionAnswers(4)

yourAnswerToTheQuestion