[JS] ==와 ===의 차이

LeeKyungwon·5일 전

공부 정리

목록 보기
16/24

==

==은 느슨한 같음(loose equality)으로 두 값이 같은지 비교한다.
두 값을 공통 형(type)으로 암묵적으로 변환.
암묵적 변환은 서로 다른 타입이면 Number 타입으로 변환하고 최종 같음 비교는 ===처럼 수행된다.

===

===은 엄격한 샅음(strict equality)으로 두 값이 같은지 비교한다.
형 변환은 일어나지 않고 둘이 서로 다른 형이면 둘은 같지 않다고 판단한다.

관련 내용

  • == 는 암묵적 형변환이 일어나는데, 암묵적 형변환이 일어날 것을 모두 기억하거나 예측하는 것이 어렵기 때문에, 의도하지 않은 결과를 얻게 될 가능성이 크고 이로 인해 오류 가능성이 커진다. 따라서 동등함을 비교하기 위해서 === 를 사용하는 것이 좋다.
  • 비교 연산 중에 ES6(ECMAScript 2015)에 추가된 Object.is 도 있다. +00NaN, 비교 이외에는 === 연산과 동일한 결과를 준다.
  • 객체간 비교할 경우 객체 안의 내용이 같더라도 참조형이기 때문에 =====, Object.is 로 비교하면 false로 판단한다. 따라서 JSON.stringify 로 객체 안의 내용을 문자열로 변환한 후 비교 하거나 순서가 보장되지 않는 값이라면, 정렬 후 비교 한다.

0개의 댓글