해당 게시물은 모던 자바스크립트 Deep Dive를 읽으며 도움이 될만한 내용을 발췌하여 정리한 독후 기록물입니다. 세부적인 내용은 책을 통해 직접 확인하는 것이 좋습니다.
자바스크립트의 모든 값은 타입이 존재한다.
이때 값의 타입은 개발자의 의도에 따라 다른 타입으로 변환할 수도 있고, 개발자의 의도와는 상관없이 표현식을 평가하는 도중에 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환되기도 한다.
명시적 타입 변환(타입 캐스팅)
: 개발자가 의도적으로 값의 타입을 변환하는 것암묵적 타입 변환(타입 강제 변환)
: 자바스크립트 엔진에 의해 암묵적으로 타입이 변환되는 것명시적 타입 변환이나 암묵적 타입 변환이 기존 원시 값을 직접 변경하는 것은 아니다. 원시 값은 변경 불가능한 값이므로 변경할 수 없다. 타입 변환은 기존 값을 사용하여 다른 타입의 새로운 원시 값을 생성하는 것이다.
var x = 10;
var str = x + '';
위 코드에서 자바스크립트 엔진은 표현식 x + ‘’
을 평가하기 위해 x 변수의 숫자 값을 바탕으로 새로운 문자열 값 ‘10’을 생성하고 평가한다. 이때 암묵적으로 생성된 문자열 ‘10’은 x 변수에 재할당되지 않는다.
즉, 암묵적 타입 변환은 표현식을 에러 없이 평가하기 위해 피연산자의 값을 기반으로 새로운 타입의 값을 만들어 단 한 번 사용하고 버린다.
암묵적 타입 변환과 달리 명시적 타입 변환은 타입을 변경하고자 하는 개발자의 의지가 명확하게 드러난다. 이때 명시적 타입 변환과 암묵적 타입 변환 사용에 있어서는 동료와 코드의 흐름에 맞는 상황이 중요하며 가장 고려해야 하는 점은 작성한 코드가 쉽게 예측 가능해야 한다는 점이다.