모던 자바스크립트 Deep Dive

[TIL/모던 자바스크립트 Deep Dive] 2023/04/28

9장. 타입 변환과 단축 평가 9-1. 타입 변환이란? > 타입 변환의 종류 자바스크립트의 모든 '값'은 '타입'이 있다. 타입의 변환이 에 의한 것인지 여부에 따라 과 으로 구분된다. 은 이라고도 부른다. 표현식을 평가하는 도중에, 자바스크립트 엔진에 의해

2023년 4월 28일2min read

9장. 타입 변환과 단축 평가

9-1. 타입 변환이란?

타입 변환의 종류

자바스크립트의 모든 '값'은 '타입'이 있다. 타입의 변환이 ``개발자에 의도`에 의한 것인지 여부에 따라 `암묵적 타입 변환(implicit coercion)``명시적 타입 변환(explicit coercion)``으로 구분된다.

암묵적 타입 변환(implicit coercion)```은 ```타입 강제 변환(type coercion)```이라고도 부른다. ```개발자의 의도와는 상관없이``` 표현식을 평가하는 도중에, 자바스크립트 엔진에 의해 암묵적으로 타입이 변환되는 상황을 의미한다.

![](https://velog.velcdn.com/images/minkwan/post/ca57b5c8-75c9-4abd-ad9f-460a05d78a1e/image.png)

뭣이 중헌디?

<쟁점 1>

암묵적 타입 변환이든 명시적 타입 변환이든, ``기존 원시 값을 직접 변경하지 않는다``. 암묵적 타입 변환에 대한 예시 코드를 다시 살펴보자.

자바스크립트 엔진은 ``x+""`라는 표현식을 평가하기 위해, x 변수의 숫자 값을 바탕으로 새로운 문자열 값 '10'을 생성하고, 비로소 `'10'+""`라는 표현식을 평가하게 된다. 암묵적으로 생성된 문자열 '10'은 x 변수에 재할당되는 것이 아니다. 그렇기에 원시 값을 console에 찍어보면 `number, 10``이 반환되는 것이다.

<쟁점 2>

명시적 타입 변환은 타입을 변경하겠다는 개발자의 의지가 코드에 명백히 드러난다. 반면 암묵적 타입 변환은 개발자의 의지와는 별개로 타입이 자동 변환된다.

그렇다고, 예측 가능성을 control하기 위해 명시적 타입 변환만 사용하는 것이 옳다고 할 수도 없다. 자바스크립트 문법을 잘 이해하고 있는 개발자에게는 ``(10).toStrirng()`보다 `10+""``이 더욱 간결하고 이해하기 쉬운 코드일 수 있기 때문이다.