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

자바스크립트(JavaScript)에서 ==와 ===의 차이점은 무엇일까?

동등 연산자(==)란?

더블 등호(==)는 추상적 동등 비교 연산자입니다. 이 연산자는 비교를 수행하기 전에 두 피연산자를 같은 타입으로 자동 변환(타입 강제 변환, type coercion)한 뒤 값을 비교합니다. 따라서 타입이 달라도 값이 같다고 판단되면 true를 반환합니다.

예시:

4    ==  4      // true
'4'  ==  4      // true
4    ==  '4'    // true
0    ==  false  // true

위 예시에서 문자열 '4'와 숫자 4, 그리고 false0이 같다고 평가되는 것은, 비교 전에 자바스크립트 엔진이 암묵적으로 타입을 변환하기 때문입니다.

일치 연산자(===)란?

트리플 등호(===)는 엄격한 일치 비교 연산자입니다. 타입 변환 없이 값과 타입을 모두 비교하며, 타입이 다르거나 내용이 다르면 false를 반환합니다.

예시:

4 === 4     // true
4 === '4'   // false

var v1 = {'value': 'key'};
var v2 = {'value': 'key'};
v1 === v2   // false

객체 비교 시 주의할 점

위 예시에서 v1v2는 내용이 완전히 같은 객체임에도 불구하고 false를 반환합니다. 그 이유는 객체는 값이 아닌 참조(reference)로 비교되기 때문입니다. 두 변수는 각각 서로 다른 메모리 위치에 있는 별개의 객체를 가리키고 있으므로, 내용이 동일하더라도 일치하지 않는 것으로 판단됩니다.

정리 및 사용 권장 사항

  • ==는 비교 전 타입을 자동으로 변환하므로, 의도하지 않은 결과가 나올 수 있습니다. 예를 들어 null == undefinedtrue로 평가됩니다.
  • ===는 타입 변환 없이 엄격하게 비교하므로 코드의 예측 가능성과 안정성이 높아집니다.
  • 따라서 특별한 이유가 없다면 대부분의 경우 ===(그리고 !==)를 사용하는 것이 좋습니다.