자바스크립트에서는 비교 연산자가 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
결론: 엄격 연산자인 === 잘 쓰자(물론 때에 맞춰 쓰는 게 최고지만)
'Javascript' 카테고리의 다른 글
화살표 함수 this(arrow function this) (0) | 2020.11.11 |
---|---|
hoisting(호이스팅) (0) | 2020.10.16 |
var와 let 그리고 const (0) | 2020.10.15 |
자바스크립트 객체 (0) | 2020.08.21 |
데이터 타입 (0) | 2020.08.19 |