━━━━ ◇ ━━━━
-/js

[JS] 비교 연산자

👀 JavaScript의 비교 연산자

JavaScript는 엄격비교(===)와 추상비교(===) 두 가지 비교 방법이 존재. 엄격비교는 두 피연산자가 같은 자료형, 같은 내용이여야 하고, 추상비교는 두 피연산자를 비교 전에 동일한 자료형으로 변환해서 비교한다. 관계추상비교(<=)와 같은 경우에는 원시값으로 변환 후 다시 같은 자료형으로 변환하여 비교를 수행

✔ 비교 연산의 특징

  1. 두 문자열이 같은 문자 시퀀스로 구성되고, 같은 길이이며, 같은 위치에 같은 문자가 존재하면 일치
  2. 두 숫자는 같은 숫자면 일치. NaN은 자기 자신을 포함한 그 무엇과도 불일치. +0-0은 일치
  3. 두 불리언은 같은 값일때 일치
  4. 서로 다른 두 객체는 절대 일치하거나 동등하지 않음 (객체를 비교하는 표현식은 두 피연산자가 동일한 객체를 참조하는 경우에만 일치)
  5. nullundefined는 자기 자신과 일치하며 동등

✔ 추상비교 vs 엄격비교

  1. 추상비교 (==, !=)
    변수 타입을 동일한 타입으로 변경 후 검사
const st='21';
const num=21;

console.log(st==num); //true
  1. 엄격비교 (===, !==)
    자료형과 값이 모두 같아야 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

👍 참고 사이트

  1. 비교 연산자 - JavaScript | MDN
  2. 비교 연산자


'- > 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
COMMENT