[Javascript] '==' 와 '===' 뭐가 다를까?

2021. 2. 24. 22:55·💻 Study/웹
728x90

처음 학교 '웹 프로그래밍' 과목에서 ==와 ===가 다름을 배웠을 때, "굳이 이렇게까지...?"라고 생각했다.

며칠 전, 이제 웹을 시작한 친구가 둘의 차이점을 물어봐서 "아마... type까지 검사하고 안하고일껄...?"라고 대답했다.

 

떠오른 김에 정리해보자.


Equality vs Identity

Javascript는 엄격한 비교와 type 변환 비교를 모두 지원한다.

 

== 와 ===의 차이를 구글링하다가 주운 짤

 

Equality

==와 !=는 Equality 연산자이다.

Javascript에서 Equality 연산자를 사용하면, 먼저 피연산자들의 type을 비교할 수 있는 형태로 변환 후 연산을 수행힌다.

555 == '555'                     // true
true == 1                        // true
'Hello' === new String('Hello')  // true
undefined == null                // true

null == false               // false
true == 'true'              // false
true == 2                   // false

 

Identity

===와 !==는 Identity 연산자이다. Equality 연산자와는 달리 형변환을 하지 않고 연산을 수행한다.

값뿐만 아니라 data type까지 일치하는 경우, true를 반환한다.

555 === '555'                    // false
true === 1                       // false
undefined === null               // false
'Hello' === new String('Hello')  // false

🎯 결론

비교 연산을 수행할 때는 '==='를 사용하여 type까지 검사하는 것을 권장한다.

typescript에서 type검사를 하는 이유와 비슷하지 않을까?
컴파일 오류나 눈으로 찾기 힘든 결함을 찾아줄 수 있을 것 같다.

ReactJS로 코드를 깨작깨작할 때, eslint가 == 연산자를 사용한 부분에서 계속 ===를 사용하라고 경고를 날렸던 기억이 난다.
728x90
저작자표시 (새창열림)

'💻 Study > 웹' 카테고리의 다른 글

[Netlify] Treating warnings as errors because process.env.CI = true.  (0) 2022.01.03
[Node.js] GET과 POST의 차이는 무엇일까?  (0) 2021.12.08
#2-2 USEEFFECT  (0) 2021.01.12
#2-1 USEEFFECT  (0) 2021.01.12
#1 USESTATE  (0) 2021.01.12
'💻 Study/웹' 카테고리의 다른 글
  • [Netlify] Treating warnings as errors because process.env.CI = true.
  • [Node.js] GET과 POST의 차이는 무엇일까?
  • #2-2 USEEFFECT
  • #2-1 USEEFFECT
soyang.
soyang.
코딩 및 개발 일지를 기록합니다.
  • soyang.
    소소한 코딩일지
    soyang.
  • 전체
    오늘
    어제
  • 링크

    • Github 🐾
    • 포트폴리오 📓 (리뉴얼중)
    • LinkedIn 👩🏻‍💼
  • 공지사항

    • 소소한 코딩일지
  • 블로그 메뉴

    • 방명록
    • 분류 전체보기 (181)
      • 🚩 목표 & 회고 (9)
      • 📓 Papers (10)
      • 🧇 Algorithm (44)
        • 이론 (1)
        • LeetCode (2)
        • 프로그래머스 (30)
        • 백준 (11)
      • 💻 Study (47)
        • 🤖 AI 인공지능 (3)
        • Python 파이썬 (3)
        • Docker 도커 (4)
        • 웹 (20)
        • 안드로이드 (2)
        • JAVA 자바 (1)
        • Firebase (3)
        • Linux 리눅스 (10)
      • 🍪 Projects (2)
      • 🎒 학교 (44)
        • 대학원 도비 (2)
        • 21 동계 모각코: 슈붕팥붕 (13)
        • 21 하계 모각코: 와팬호 (13)
        • 20 동계 모각코: 와팬호 (13)
      • 활동들 (16)
        • 인프런 대학생 LEAF 2기 (9)
        • 2021 Silicon Valley Online .. (7)
  • 태그

    모각코
    Ai
    목표
    인프런대학생Leaf
    Python
    React
    알고리즘
    Artificial Intelligence
    백준
    Algorithm
    programmers
    프로그래머스
    리액트
    코딩테스트
    공부
    노마드코더
    Linux
    error
    Gentoo
    알고리즘스터디
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
soyang.
[Javascript] '==' 와 '===' 뭐가 다를까?
상단으로

티스토리툴바