違いがすぐ分かるように、出来るだけ全てのパターンを列挙しました。 また==や===で判別できない、配列・オブジェクト、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を使っています。 方法はここに掲載しました。
コメント