Používejte === a ruční konverzi když si nejste jistý.
Vymyslel jsem lepsi reseni: nepouzivam JavaScript 
Takže vlastně říkáte, že porovnáváte věci různého datového typu, ale přijde vám to v pohodě a může z to JavaScript.
WTF vtípků ohledně nelogičností JS je plný net, ale vlastní zkušenost je k nezaplacení:
Mám prostě neutuchající pocit, že vývojáři Javascriptu mají obzvláštní talent vymlet úplně každý výmol, který se na cestě nachází - i kdyby to měli vzít oklikou, aby do něj najeli.
https://plus.google.com/+MiroslavPrymek/posts/euSuscZtbyj
Takže opět, vaši neznalost vydáváte za chybu JS. Ano, vtípků o JS je plný net, ale opět, v drtivé většině případů to vychází z neznalosti autorů. Jak jinak interpretovat to, že JavaScriptu vyčítají to, co vrací na [] == {}, apod. To, že jazyk něco *umožňuje*, neznamená, že je dobrý nápad to dělat.

To je jako vyčítat Perlu, že se v něm dá kód snadno prasit. Když to neumím, tak v tom nepíšu. Ale chlubit se tím veřejně...
Když už, tak: moje hlavní výhrada vůči JS je, že to je neuvěřitelně splácaný jazyk, který je snad vůbec nejvíc nepředvídatelný ze všech, co jsem kdy viděl.
A PHP znáte?
####################
Dodatek - I když to tak možná nevypadá, tak JS mě spoustou věcí štve/nesedí či spousta věcí okolo něj. Ale nelíbí se mi, když někdo něco kritizuje na základě své nevědomosti.