왜 JavaScript에서 2==”2”는 true인가?

Namu CHO
2 min readJan 12, 2022

--

모두 2==”2”가 true인 것은 알 것이다.

(그리고 2===”2”는 false라는 것도!)

전에는 ‘왜’ 그런지는 궁금하지 않았었다.

지난 주에 프론트엔드 스터디에서 데이터 타입을 담당 주제로 선정하고 공부를 했다.

(참여하고 있는 프론트엔드 스터디: https://github.com/vi2920va/FE_interview)

데이터 타입을 공부하다 보니 갑자기 저 이유가 궁금해져서 급 질문을 남겼고, 이게 Type coercion과 관련이 있다는 것을 알게 되었다.

여기 Type coercion과 관련하여 읽어보면 좋을 글을 링크한다.

간략하게 2==”2”가 true인 이유를 설명하자면,

자바스크립트는 오류를 최대한 피하고 싶어하는 언어이기 때문에 상황에 따라 적절히 형변환을 시킨다.

예를 들어 5 * “10”을 만나면 자바스크립트는 ‘음… 이건 곱셈을 해야 하는 상황이군… 하지만 문자는 곱셈을 못하니까 오류가 날텐데… ’하고 생각하고 오류를 피하기 위해 10을 숫자로 바꾼다.

그래서 2==”2”라는 코드를 봤을 때도 마찬가지로 자바스크립트는 ‘음 숫자와 문자의 비교라… 뒤를 숫자로 바꿔야 겠군’하고 2를 숫자로 변환 시키는 것이다.

--

--

Namu CHO
Namu CHO

Written by Namu CHO

외노자 개발자 나무 🇸🇬

No responses yet