자바스크립트에서 두 값이 같은지 비교할 때 사용할 수 있는 방법은 두 가지가 있습니다.
- 일반 동등 연산자(Regular Equals):
==(이중 등호) - 엄격 동등 연산자(Strict Equals):
===(삼중 등호)
==와 ===의 핵심 차이
==(이중 등호)는 값만 비교하고 자료형(타입)은 무시합니다. 비교 전에 필요하면 암묵적 형 변환(type coercion)을 수행합니다.===(삼중 등호)는 값과 자료형을 모두 비교하며, 형 변환 없이 엄격하게 판단합니다.
예제로 살펴보기
// true를 반환
5 == "5"
// false를 반환
5 === "5"
위 예제에서 왼쪽 값 5는 숫자(number) 타입이고, 오른쪽 값 "5"는 따옴표(" ")로 감싸져 있기 때문에 문자열(string) 타입입니다.
두 값 모두 '다섯'이라는 동일한 값을 가지지만, 하나는 숫자형이고 다른 하나는 문자열형입니다. 엄격 동등 연산자 ===는 값과 자료형이 모두 같아야만 true를 반환합니다.
자료형이 같은 경우
반대로 아래 예제들은 양쪽의 값과 자료형이 모두 같으므로 true를 반환합니다.
// true를 반환
5 === 5
// true를 반환
"5" === "5"
개발 팁: 가능하면 ===를 사용하세요
암묵적 형 변환 때문에 ==는 예상치 못한 결과를 만들 수 있습니다. 예를 들어 null == undefined, 0 == "", 0 == false는 모두 true로 평가됩니다. 이런 부작용을 피하기 위해 대부분의 개발자와 코딩 컨벤션(예: ESLint의 eqeqeq 규칙)은 의도하지 않은 버그를 방지하기 위해 === 사용을 권장합니다.