JavaScript의 이상한 연산? 숨겨진 비밀을 파헤쳐보자!
by DD
5개월 전
조회수 17
JavaScript에서 `true + true === 2`가 참인 이유는 + 연산자의 동작 방식 때문이다.
+ 연산자는 문자열이 없으면 숫자로 변환하여 덧셈을 수행한다.
Boolean 값은 내부적으로 1과 0으로 변환되어 계산된다는 점을 이해해야 한다.
JavaScript의 형 변환 이해하기
JavaScript는 동적 타입 언어로, 연산 시 자동 형 변환이 일어난다. 구체적으로 `+` 연산자는 문자열이 없으면 숫자로, 있으면 문자열 연결을 수행한다. 따라서 Boolean 값은 ToNumber 규칙에 따라 1과 0으로 변환된다. 이러한 동작은 데이터 타입에 대한 이해를 바탕으로 한다.
다른 언어와의 비교
JavaScript의 Boolean 연산은 다른 언어와 유사한 동작을 보인다. Python에서도 `True + True`는 2를 반환하며, C/C++에서도 `true`는 1로 취급된다. 반면, 타입스크립트는 엄격한 타입 검사를 통해 이러한 암묵적 형 변환을 줄여 타입 안정성을 높인다.
실용적인 팁: 예외 상황 다루기
JavaScript에서 예상치 못한 형 변환으로 인한 버그를 방지하려면, 엄격한 비교 연산자(===)를 사용해야 한다. 따라서 타입스크립트를 사용하여 타입 안정성을 확보하고, 명시적인 형 변환을 통해 코드의 의도를 명확히 하는 것이 중요하다. 결과적으로 코드 유지보수성을 향상시킬 수 있다.