Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

자바스크립트(JavaScript) == 와 === 연산자의 차이점 완벽 정리

자바스크립트에서 ==(동등 연산자)와 ===(일치 연산자)는 두 피연산자를 비교할 때 사용하는 연산자입니다. 두 연산자는 비슷해 보이지만 동작 방식에 중요한 차이가 있으며, 이 차이를 이해하는 것은 버그 없는 코드를 작성하는 데 필수적입니다.

== 와 === 의 주요 차이점

번호구분== (더블 equals)=== (트리플 equals)
1명칭동등 연산자(Equality Operator)라고 불립니다.일치 연산자 / 엄격한 동등 연산자(Identity / Strict Equality Operator)라고 불립니다.
2비교 방식비교 전 피연산자의 타입을 자동으로 변환(type coercion)합니다.타입 변환 없이 엄격하게(strict) 비교합니다.
3문법a == b 형태로 사용합니다.a === b 형태로 사용합니다.
4동작 원리먼저 두 피연산자를 같은 타입으로 변환한 후 비교를 수행합니다. 즉, 양쪽 피연산자의 타입이 동일해진 시점에 비교가 이루어지며, 이를 타입 강제 변환 비교(type coercion comparison)라고도 합니다.비교 전 어떠한 타입 변환도 수행하지 않으며, 두 피연산자의 타입과 값이 모두 정확히 같을 때만 true를 반환합니다.

== vs === 예제 코드

아래 예제를 통해 두 연산자의 실제 동작 차이를 확인해 보겠습니다.

equals.js

var a = true;
var b = 1;
var c = true;

console.log(a == b); // 1을 불리언 true로 먼저 변환한 후 비교 → true
console.log(a === c); // 두 피연산자 모두 boolean 타입으로 변환 불필요, 단순 비교 → true
console.log(a === b); // 타입 변환이 수행되지 않으며, 두 피연산자의 타입이 다르므로 → false

실행 결과

true
true
false

정리 및 사용 권장 사항

==는 암묵적인 타입 변환 때문에 '1' == 1, null == undefined처럼 직관적이지 않은 결과를 만들어 낼 수 있습니다. 반면 ===는 타입과 값을 모두 검사하므로 예측 가능한 결과를 보장합니다.

따라서 대부분의 자바스크립트 스타일 가이드(예: Airbnb, ESLint 기본 규칙)에서는 의도치 않은 타입 변환으로 인한 버그를 방지하기 위해 항상 ===를 사용할 것을 권장합니다. ==null 또는 undefined 여부를 동시에 확인하는 등 특수한 경우에만 제한적으로 사용하는 것이 좋습니다.