모두 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를 숫자로 변환 시키는 것이다.