暗黙の型変換を避ける

まず質問ですが、以下の条件式の違いを説明できますか? また、どちらが実行され、どちらが実行されないか、分かりますか?


var zero = 0;

// pattern A

if(zero === false){
    // ...
}

// pattern B

if(zero == false){
    // ...
}

=====は違います。 もちろん!==!=も違います。

JavaScriptでは変数を比較するときに暗黙の型変換が行われます。 ===!==では、比較する際に値と式の型の両方をチェックしますが、 ==!=では値しかチェックしません。

したがって、さきほどの例では pattern Aは実行されず、 pattern Bは実行されます。

変数比較の際には、なるべく ===!==を使うようにしましょう。