JavaScriptで 0 == "" を評価した結果として正しいものはどれか。
解説
==(等価演算子)は比較する前に暗黙の型変換(type coercion)を行います。0 == "" の場合、空文字列 "" が数値に変換されて 0 になるため、0 == 0 となり true が返ります。「型が違うからfalse」というのは ===(厳密等価演算子)の動作であり、== では型変換が起きる点が重要です。==の型変換ルールはどうなっているか==の型変換は直感に反する結果を生むことがあります。代表的な例を見てみましょう。0 == '' // true('' → 0) 0 == '0' // true('0' → 0) false == '0' // true(false → 0, '0' → 0) null == undefined // true(特別ルール) null == 0 // false(nullの型変換は限定的)特に null == undefined が true なのに null == 0 が false になるのは、nullの型変換がundefinedとの比較時にだけ特別扱いされるためです。こうしたルールを全て暗記するのは非現実的です。なぜ現場では===が推奨されるのか===は型変換を一切行わず、型と値の両方が一致した場合のみtrueを返します。0 === '' // false 0 === 0 // true null === undefined // false動作が予測しやすく、バグの温床になりにくいため、ESLintの eqeqeq ルールでも===の使用が推奨されています。実務では基本的に===を使い、==を使う場面は意図的に限定するのがベストプラクティスです。唯一 == が便利な場面として value == null があります。これは value === null || value === undefined と同じ意味になるため、nullとundefinedをまとめて判定したいときに簡潔に書けます。ただしこれも好みが分かれるため、チームのコーディング規約に従うのが無難です。