Programing/javascript

자바스크립트 == vs === 비교 연산자의 차이와 올바른 사용법

2025. 4. 23. 11:22
반응형

자바스크립트에서 값을 비교할 때 가장 흔히 사용되는 연산자는 ==(느슨한 비교)와 ===(엄격한 비교)입니다. 이 둘은 겉보기에는 비슷하지만, 내부 작동 방식과 비교 결과는 전혀 다를 수 있습니다. 잘못 사용하면 의도치 않은 버그로 이어질 수 있기 때문에, 정확한 차이를 이해하고 상황에 맞게 사용하는 것이 중요합니다.


✨ == (느슨한 동등 연산자)

  • 타입 변환을 허용함 (type coercion)
  • 비교 전에 두 값의 타입이 다르면 자동으로 형 변환 후 비교

예시:

'5' == 5       // true → 문자열 '5'가 숫자 5로 변환됨
0 == false     // true → false는 0으로 변환됨
null == undefined // true → 둘은 느슨한 비교에서만 같음
[] == ''       // true
[] == 0        // true

⚠️ 주의해야 할 점

  • 형 변환이 암묵적으로 일어나기 때문에 예측하기 어려운 결과를 낳을 수 있음
  • 실제로 어떤 변환이 일어나는지 알기 어려워 디버깅이 어려움

✨ === (엄격한 동등 연산자)

  • 타입까지 동일해야 true 반환
  • 비교 전 형 변환이 일어나지 않음 → 가장 안전한 비교 방식

예시:

'5' === 5      // false → 타입이 다름
0 === false    // false → 타입이 다름
null === undefined // false → 타입도 다르고 값도 다름
5 === 5        // true

🔍 요약 비교표

표현식 == 결과 === 결과 설명
'1' == 1 true false 형 변환 발생 여부 차이
0 == false true false false → 0으로 변환됨
null == undefined true false 특이 케이스 (명시적 허용)
[] == '' true false 배열 → 문자열 변환
[] == 0 true false 배열 → 숫자 변환

✅ 어떤 걸 써야 할까?

  • 항상 ===를 사용하는 것이 좋습니다.
  • 예상치 못한 형 변환을 방지하고, 코드를 명확하게 유지할 수 있습니다.
  • ==는 특별한 경우(예: null == undefined 비교) 외에는 사용을 지양하세요.

✨ 결론

==는 편해 보일 수 있지만, 내부적으로 많은 형 변환이 일어나기 때문에 비교의 정확성이 떨어질 수 있습니다. 실무나 협업 코드에서는 예외적인 상황이 아니라면 항상 ===를 사용하는 습관을 들이는게 좋습니다.

반응형

'Programing > javascript' 카테고리의 다른 글

자바스크립트 IIFE 패턴(즉시 실행 함수 표현식)의 쓰임새와 모던 대안  (0) 2025.04.24
자바스크립트 클로저(Closure)의 개념과 실전 활용 예제  (0) 2025.04.24
자바스크립트 비동기 처리 개념 정리(setTimeout, Promise, async/await)  (0) 2025.04.23
자바스크립트 this 키워드 제대로 이해하기 (함수 / 객체 / 클래스에서)  (0) 2025.04.23
자바스크립트의 데이터 타입 완전 정복 (typeof, null, undefined)  (0) 2025.04.23
자바스크립트의 var, let, const 차이와 올바른 사용법  (0) 2025.04.23
javascript 비밀번호 유효성 검사  (0) 2025.04.22
javascript 이메일 유효성 검사  (0) 2025.04.22
'Programing/javascript' 카테고리의 다른 글
  • 자바스크립트 비동기 처리 개념 정리(setTimeout, Promise, async/await)
  • 자바스크립트 this 키워드 제대로 이해하기 (함수 / 객체 / 클래스에서)
  • 자바스크립트의 데이터 타입 완전 정복 (typeof, null, undefined)
  • 자바스크립트의 var, let, const 차이와 올바른 사용법
Dongkkase
Dongkkase
개발자로 일하면서 부딪히는 문제풀이가 누군가에게 도움이 되길 바라며
    반응형
  • Dongkkase
    정집사의 개발로그
    Dongkkase
  • 전체
    오늘
    어제
    • All (478)
      • 금융 (61)
      • Programing (295)
        • Algorithm (39)
        • API (2)
        • javascript (122)
        • CSS (8)
        • HTML (10)
        • PHP (15)
        • JAVA (27)
        • JSP (17)
        • JSP 예제 (1)
        • IOS (1)
        • Android (1)
        • Sencha Touche (1)
        • bat file, cmd (0)
        • 디버깅 (2)
        • SQL (21)
        • MS-SQL (1)
        • MySQL (13)
        • 보안 (5)
      • Server (14)
        • Docker (1)
        • Windows (9)
        • Linux (3)
        • jeus (1)
      • Database (6)
      • IT 일반 (15)
      • 리뷰 (38)
        • Book (17)
        • 제품 (2)
        • 영화 소개 (11)
        • 음악 소개 (7)
      • 잡생각 (36)
        • 회고 (3)
        • 컬럼 (4)
        • 자료실 (6)
        • 낙서장 (12)
        • 위시리스트 (2)
        • WOW (1)
        • 덕 (1)
  • 인기 글

  • 최근 댓글

  • 태그

    읽고 싶은 책
    블로그
    IT블로그
    php
    자바스크립트유틸
    jsp
    It
    사고 싶은 책
    js패턴
    자바
    IT 관련
    IT·컴퓨터
    디자인패턴
    iT's MY LiFE
    SQL
    JavaScript
    위시리스트
    Java
    자바스크립트
    기초
Dongkkase
자바스크립트 == vs === 비교 연산자의 차이와 올바른 사용법
상단으로

티스토리툴바