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

jiny·2025년 1월 29일

기술 면접

목록 보기
44/78

🗣️ =====의 차이점은 무엇일까요?

  • 의도: 자바스크립트의 기본 문법을 확인하는 질문

  • 팁: nullish와 연계하여 대답하면 좋다.

  • 나의 답안

    ==(느슨한 동등 비교)===(엄격한 동등 비교)값을 비교할 때 사용하는 연산자이지만, 두 가지는 형 변환 여부에서 큰 차이가 있습니다.

    ==(느슨한 동등 비교) 연산자비교 전에 자동으로 타입을 변환해서 값을 비교합니다.
    예를 들어, 문자열 "5"와 숫자 5를 비교할 때, 문자열 "5"를 숫자 5로 바꾼 뒤 비교하기 때문에 true가 됩니다.

    반면 ===(엄격한 동등 비교) 연산자타입까지 완전히 동일해야만 true 반환합니다.
    그래서 문자열 "5"와 숫자 5는 타입이 다르기 때문에 false가 됩니다.

    실무에서는 예측 불가능한 형 변환으로 인한 버그를 방지하기 위해 ===를 기본적으로 사용합니다.

  • 주어진 답안 (모범 답안)

    비교할 때 판단이 다릅니다.
    간단히 요약하자면 ==(느슨한 동등 비교)타입은 다르지만 값이 같을 때, 예를 들어 문자열 1과 숫자 1을 비교하면 같다고 판단합니다.
    그래서 숫자 0과 nullish 값을 이 연산자를 이용해 비교하면 같다고 판단하여 true가 나올 것입니다.

    그리고 ===(엄격한 동등 비교)는 좀 더 엄격하게 타입과 값을 모두 비교합니다.
    그래서 문자열 1과 숫자 1을 비교하면 다르다고 뜰 것입니다.
    저는 보통 엄격한 비교를 위해 ===를 더 선호해 사용하는 편입니다.


📝 개념 정리

🌟 == (느슨한 비교, Loose Equality)

  • 자료형이 다를 경우 자동으로 형 변환(type coercion)을 시도한 후에 비교한다.
  • 즉, 값이 같은 경우라면 자료형이 달라도 같다고 판단할 수 있다.
  • 예제
    console.log(5 == "5"); // true (문자열 "5"가 숫자 5로 변환된 후 비교됨)
    console.log(0 == false); // true (false가 숫자 0으로 변환됨)
    console.log(null == undefined); // true (특수한 경우로, 둘이 같다고 간주됨)
    console.log([] == false); // true (빈 배열이 숫자 0으로 변환됨)
    console.log(" " == 0); // true (공백 문자열이 숫자 0으로 변환됨)
    console.log("" == 0); // true (빈 문자열이 숫자 0으로 변환됨)

🌟 === (엄격한 비교, Strict Equality)

  • 형 변환 없이 값과 자료형이 둘 다 같을 때true를 반환한다.
  • 즉, 자료형이 다르면 무조건 false이다.
  • 예제
    console.log(5 === "5"); // false
    console.log(0 === false); // false
    console.log(null === undefined); // false
    console.log([] === false); // false
    console.log(" " === 0); // false
    console.log(5 === 5); // true

🌟 언제 ==을 쓰고, 언제 ===을 써야 할까?

  • ===을 기본적으로 사용하는 게 좋다.
    • 형 변환이 없으니까 예측 가능한 코드를 작성할 수 있다.
    • 의도하지 않은 비교 오류를 방지할 수 있다.
  • ==은 특별한 경우에만 쓴다.

    • 예: null == undefinedtrue인 특성을 이용할 때

      function check(value) {
        if (value == null) { // value가 null이거나 undefined일 경우
          console.log("값이 없습니다.");
        }
      }
      
      check(null); // "값이 없습니다."
      check(undefined); // "값이 없습니다."
      • 하지만, 이 경우도 value === null || value === undefined로 명확히 쓰는 게 더 좋다.

0개의 댓글