JavaScript는 엄격비교(===
)와 추상비교(===
) 두 가지 비교 방법이 존재. 엄격비교는 두 피연산자가 같은 자료형, 같은 내용이여야 하고, 추상비교는 두 피연산자를 비교 전에 동일한 자료형으로 변환해서 비교한다. 관계추상비교(<=
)와 같은 경우에는 원시값으로 변환 후 다시 같은 자료형으로 변환하여 비교를 수행
NaN
은 자기 자신을 포함한 그 무엇과도 불일치. +0
과 -0
은 일치null
과 undefined
는 자기 자신과 일치하며 동등==
, !=
)const st='21';
const num=21;
console.log(st==num); //true
===
, !==
)true
const st='21';
const num=21;
console.log(st===num); //false
오브젝트는 동일한 오브젝트일때만 true
const object1={object:'object'};
const object2={object:'object'};
console.log(object1==object2); //false
console.log(object1===object2); //false
console.log(object1==object1); //true
console.log(object1===object1); //true
console.log(0== false); //true
console.log(0===false);// false
//0과 1은 각각 false, true로 취급. 하지만 자료형이 다르므로 엄격비교에서는 같지 않음
console.log(''==false);// true
console.log(''===false); // false
//빈 문자열도 false로 취급. 하지만 자료형이 다르므로 엄격비교에서는 같지 않음
console.log(null==undefined); //true
console.log(null===undefined);//false
//null과 undefined의 값은 일치. 하지만 자료형이 다르므로 엄격비교에서는 같지 않음
console.log(undefined==false); //false
console.log(undefined===false); //false
console.log(null==false); //false
console.log(null===false); //false