🎆
[JavaScript]曖昧な比較 と 厳密な比較 について(備忘録)
1.曖昧な比較とは
・== もしくは != を用いて、比較を行います。
・データ型は異なっていても、変数・定数に格納された値が同じなら「true」と判断されます。
・曖昧な比較なので、明確な理由がない限り使用は推奨されません。
・比較する前にデータ型の変換が行われます。
2.厳密な比較とは
・=== もしくは !== を用いて、比較を行います。
・データ型が同じ且つ変数・定数に格納された値が同じ場合、「true」と判断されます。
・バグの要因になりかねない曖昧な比較よりも、厳密な比較が推奨されます
3.サンプルプログラム
〇例1
Sample_1.js
const num = 1000;
const word = '1000';
// 曖昧な比較
if(num == word){
console.log('同じ');
} else {
console.log('異なる');
}
// 厳密な比較
if(num === word){
console.log('同じ');
} else {
console.log('異なる');
}
実行結果
同じ
異なる
重要:曖昧な比較では、変数wordに格納した文字列が数値に変換されてから比較が行なわれています。
〇例2
Sample_2.js
const num = 1000;
const word = '1000';
// 曖昧な比較
if(num != word){
console.log('異なる');
} else {
// 等しい場合の処理
console.log('同じ');
}
// 厳密な比較
if(num !== word){
console.log('異なる');
} else {
console.log('同じ');
}
実行結果
同じ
異なる
〇例3
Sample_3.js
const a = null;
const b = undefined;
// 曖昧な比較
if(a == b){
console.log('同じ');
} else {
console.log('異なる');
}
// 厳密な比較
if(a === b){
console.log('同じ');
} else {
console.log('異なる');
}
実行結果
同じ
異なる
重要:null は数値に変換されると、0になります。
undefined は数値に変換されると、 NaN(Not a Number)になります。
undefined と null は、曖昧な比較では等しいと判定されます。
4.参考
5.その他
・実行環境
Discussion