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

 

 

 

 

 

 

 

결론: 엄격 연산자인 === 잘 쓰자(물론 때에 맞춰 쓰는 게 최고지만)