9.1 타입 변환이란?

9.2 암묵적 타입 변환

1.문자열 타입으로 변환

문자열 연결연산자

1 + '2' // -> "12"

위 예제의 + 연산자는 피연산자 중 하나 이상이 문자열('2')이므로 문자열 값을 만드는 문자열 연결 연산자로 동작한다.

자바스크립트 엔진은 문자열 연결 연산자 표현식을 평가하기 위해 문자열 연결 연산자의 피연산자 중에서 문자열 타입이 아닌 피연산자(1)를 문자열 타입('1')으로 압묵적 타입 변환한다.

`1 + 1 = ${1 + 1} // "1 + 1 = 2`

ES6에서 도입된 템플릿 리터럴의 표현식 삽입 역시 평가 결과를 문자열 타입으로 암묵적 타입 변환한다.

2.숫자 타입으로 변환

산술연산자

1 - '1' // -> 0
1 * 10 // -> 10
1 / 'one' // NaN

산술 연산자의 역할은 숫자 값을 만드는 것으로, 모든 피연산자는 코드 문맥상 모두 숫자타입이어야 한다.

자바스크립트 엔진은 산술 연산자 표현식을 평가하기 위해 산술 연산자의 피연산자 중 숫자 타입이 아닌 피연산자를 숫자 타입으로 암묵적 타입 변환한다.

이때 피연산자를 숫자 타입으로 변환할 수 없는 경우는 산술 연산을 수행할 수 없으므로 평가 결과가 NaN이 된다.

//웃긴것은 자바스크립트 엔진은 같은 ‘숫자’ 숫자의 피연산자가 있어도 다같은 연산자이지만 + 만 문자열 연산자로 작동한다.