👀 JavaScript의 비교 연산자
JavaScript는 엄격비교(===
)와 추상비교(===
) 두 가지 비교 방법이 존재. 엄격비교는 두 피연산자가 같은 자료형, 같은 내용이여야 하고, 추상비교는 두 피연산자를 비교 전에 동일한 자료형으로 변환해서 비교한다. 관계추상비교(<=
)와 같은 경우에는 원시값으로 변환 후 다시 같은 자료형으로 변환하여 비교를 수행
✔ 비교 연산의 특징
- 두 문자열이 같은 문자 시퀀스로 구성되고, 같은 길이이며, 같은 위치에 같은 문자가 존재하면 일치
- 두 숫자는 같은 숫자면 일치.
NaN
은 자기 자신을 포함한 그 무엇과도 불일치.+0
과-0
은 일치 - 두 불리언은 같은 값일때 일치
- 서로 다른 두 객체는 절대 일치하거나 동등하지 않음 (객체를 비교하는 표현식은 두 피연산자가 동일한 객체를 참조하는 경우에만 일치)
null
과undefined
는 자기 자신과 일치하며 동등
✔ 추상비교 vs 엄격비교
- 추상비교 (
==
,!=
)
변수 타입을 동일한 타입으로 변경 후 검사
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
👍 참고 사이트
'- > js' 카테고리의 다른 글
[JS] 자바스크립트 메모리 누수 (0) | 2021.06.19 |
---|---|
[JS] self vs this (0) | 2021.01.15 |
[JS] DOM (0) | 2021.01.15 |
[JS] 연동방식 (0) | 2021.01.15 |
[JS] Hoisting (0) | 2021.01.14 |