短い答え
- === は、型と値が両方とも同じときだけ true になる、厳密な比較です。
- は、型が違うと自動で型をそろえてから比べるので、思わぬ組み合わせが true になります。
- 普段は === を使い、 は null と undefined をまとめて調べたいときのように、理由がある所だけで使います。
深掘りの答え
数と文字列、0 と空の文字列を比べると、違いがはっきり出ます。
JavaScript
console.log(1 == "1");
console.log(1 === "1");
console.log(0 == "");
console.log(null == undefined);
console.log(null === undefined);true
false
true
true
false0 == "" が true になるのは、空の文字列が数の 0 に変えられてから比べられるためです。入力欄が空かどうかを == で調べると、0 を入れた人まで「空」と扱ってしまいます。
null == undefined だけは、== が役に立つ数少ない場面です。value == null と書くと、null と undefined の両方を 1 回で調べられます。チームの決まりで禁じている所もあるので、合わせます。
面接官が見ている点
- 「== は型を見ない」とだけ言わず、型をそろえてから比べる、と仕組みで話せるか
- 実際に困る場面 (空の入力と 0 など) を 1 つ挙げられるか
- 自分の決め (普段は === を使う) と、その理由を言えるか
