暗黙の型変換を避ける
まず質問ですが、以下の条件式の違いを説明できますか? また、どちらが実行され、どちらが実行されないか、分かりますか?
var zero = 0;
// pattern A
if(zero === false){
// ...
}
// pattern B
if(zero == false){
// ...
}
===
と==
は違います。
もちろん!==
と!=
も違います。
JavaScriptでは変数を比較するときに暗黙の型変換が行われます。
===
や!==
では、比較する際に値と式の型の両方をチェックしますが、
==
や!=
では値しかチェックしません。
したがって、さきほどの例では pattern Aは実行されず、 pattern Bは実行されます。
変数比較の際には、なるべく
===
や!==
を使うようにしましょう。