Javascript
비교 연산자
M9M9
2020. 10. 16. 21:47
자바스크립트에서는 비교 연산자가 2가지가 있다.
1. ==(추상 또는 느슨한 비교)
이 경우 두 개의 변수 타입을 같은 타입으로 변경하여 검사를 진행한다.
그래서 해당 값이 동일한지 아닌지를 비교한다.
예를 들어
const st='3';
const num=3;
console.log(st==num); // true
console.log(st!=num); //false
같은 자료형으로 맞췄을 경우 같은 값이기에 true가 출력된다.
2. ===(엄격비교)
이 경우에는 타입과 해당 값이 모두 같아야 한다.
const st='3';
const num=3;
console.log(st===num); // false
console.log(st!==num); //true
그러면 객체인 경우의 비교연산자들은 어떻게 되나?
const object1={test:'m9'};
const object2={test:'m9'};
console.log(object1==object2); //false
console.log(object1===object2); //false
두가지 경우 모두 false가 출력된다.
객체는 각각 다른 주소 값을 가지고 있기 때문에 이런 결과가 발생한다.
이 외에도
예외 상황으로는
console.log(0== false); //true //0은 값이 false로 취급된다.
console.log(0===false);// false;
console.log(''==false);// true //''빈 문자열도 값이 false로 취급된다.
console.log(''===false); // false
console.log(null==undefined); //true //null과 undefined의 값은 같다.
console.log(null===undefined);//false;
console.log(undefined==false); //false
console.log(undefined===false); //false
console.log(null==false); //false
console.log(null===false); //false