1. 타입 변환이란?
- 자바스크립트는 동적 타입 언어 이고 모든 값은 타입이 있는데, 개발자에 의해 의도적으로 또는 엔진에 의해 암묵적으로 타입이 변환될 수 있다.
- 개발자에 의해 변환된 타입을 **명시적 타입 변환(Explicit coercion) 또는 타입 캐스팅(Type casting)**이라 한다.
- 자바스크립트 엔진에 의해 변환된 타입을 **암묵적 타입 변환(Implicit coercion) 또는 타입 강제 변환(Type coercion)**이라고 한다.
명시적 타입 변환)
let x = 10;
// 명시적 타입 변환
let str = x.toString(); // 숫자를 문자열로 타입 캐스팅한다.
console.log(typeof str); // string
암묵적 타입 변환)
let x = 10;
// 암묵적 타입 변환
// 숫자 타입 x의 값을 바탕으로 새로운 문자열 타입의 값을 생성해 표현식을 평가한다.
let str = x + '';
console.log(typeof str, str); // string 10
// 변수 x의 값이 변경된 것은 아니다.
console.log(x); // 10
2. 암묵적 타입 변환(Implicit coercion)
- 자바스크립트 엔진은 표현식을 평가할 때 문맥(context)을 고려해서 암묵적 타입 변환을 실행하는데, 가급적 에러를 발생시키지 않으려고 문자, 숫자, 불리언 같은 원시타입으로 자동 변환 한다.
2.1. 문자열 타입으로 변환
- 예시로 + 연산자는 피연산자 중 하나 이상이 문자열이므로 문자열 연결 연산자로 동작한다.
1 + "2" // "12"