Javascript == と===の違い一覧表とオブジェクトやNaNの比較方法

違いがすぐ分かるように、出来るだけ全てのパターンを列挙しました。 また==や===で判別できない、配列・オブジェクト、NaN、+0、-0についての判別方法も載せました。 Referenceとして掲載しています。 ここに無いパターンがあったら順次付け加えていきます。

比較一覧表

== 等値演算子 === 同値演算子(厳密) strict equality switch文は===を使用
console.log('3'==3);
//->true

console.log(1==true);
//->true
値だけ比較 異なる型を比較前に変換する
console.log('3'===3)
//->false

console.log(1===true)
//->false
型と値を比較 型が異なるのでfalse
let a=['a', 'b', 'c'];
let b=['a', 'b', 'c'];
let c=a;
console.log(['a', 'b', 'c']==['a', 'b', 'c']); 
//->false
console.log(a==['a', 'b', 'c']);
//->false
console.log(a == b );
//->false
console.log(a == c);
//->true
参照先を比較 同じ配列・オブジェクトの時だけtrueを返す
let a=['a', 'b', 'c'];
let b=['a', 'b', 'c'];
let c=a;
console.log(['a', 'b', 'c']===['a', 'b', 'c']);
//->false
console.log(a===['a', 'b', 'c']);
//->false
console.log(a===b);
//->false
console.log(a === c);
//->true
参照先を比較 同じ配列・オブジェクトの時だけtrueを返す
(多階層でない時)オブジェクトの値を比較したい時、まずキーでソートして、文字列化して文字列としてで比較する。
let a = {"a":"a","b":"b"};
let b = {"b":"b","a":"a"};
let a_json = JSON.stringify(Object.entries(a).sort());
let  b_json = JSON.stringify(Object.entries(b).sort());
console.log(a_json === b_json);
//->true
console.log('3.14e2'==314);
console.log('0x10'==16);
//->true
console.log('3.14e2'===314);
console.log('0x10'===16);
//->false
let a=1; 
let b=1;
console.log(a==b);
//->true
let a=1; 
let b=1;
console.log(a===b);
//->true
let a=null; 
let b=null;
console.log(a==b);
//->true

let a=undefined; 
let b=undefined;
console.log(a==b);
//->true

console.log(null==undefined);
//->true
let a=null; 
let b=null;
console.log(a===b);
//->true

let a=undefined; 
let b=undefined;
console.log(a===b);
//->true

console.log(null==undefined);
//->false
NaNと+0,-0の判定にはObject.is()を使う
console.log(NaN==NaN);
//->false

console.log(Object.is(NaN, NaN));
//->true
console.log(NaN===NaN);
//->false

console.log(Object.is(NaN, NaN));
//->true
console.log(+0==-0);
//->true

console.log(Object.is(+0,-0));
//->false
console.log(+0===-0);
//->true

console.log(Object.is(+0,-0));
//->false

TablePress内のコードをEnglighterJSで表示方法

上の表のセル内のコード表示はEnglighterJSを使っています。 方法はここに掲載しました。

コメント