9.1 타입 변환이란?

자바스크립트의 모든 값은 타입이 있다.

자바스크립트의 모든 값은 개발자의 의도에 따라 다른 타입으로 변환이 가능하다.

<aside> 📌

자바스크립트에 존재하는 type의 종류

자바스크립트에는 number, string, boolean, undefined, null, symbol, bigint의 7가지 기본 타입과, object 참조 타입이 존재한다.

</aside>

개발자가 의도적으로 값의 타입을 변환하는 것을 명시적 타입 변환(explicit coercion) 또는 타입 캐스팅(type casting)이라고 말한다.

<aside> 💡

명시적이란 ?

내용이나 뜻을 분명하게 드러내 보이는 것을 명시적이라고 한다.

즉, “명시적 타입 변환”이라는 것은 개발자가 의도적으로 값을 지정할 때 해당 값의 타입을 분명하게 드러내 보이기 위해 변환한다.

반대말로는 암시적이라는 단어가 있다 !

⇒ 직접적으로 표현하지 않고 넌지시 나타냄. 숨겨져 있거나 간접적인 표현이라는 뜻

</aside>

[ 예제 09-01 ]


var x = 10; // x라는 식별자에 number 타입인 10을 대입해줌으로써 x의 type은 number가 된다.
var y = "10" // y라는 식별자에 String 타입인 문자열 "10"을 대입해줌으로써 y의 type은 String

var str = x.toString(); // str이라는 식별자를 선언하고 식별자 x 에 toString 함수를 
												// 이용하여 x의 값을 문자열 단위로 잘라내어 str에 값을 넣는다.

console.log(typeof str, typeof x, typeof y) // 출력 결과 : string number string

개발자의 의도와는 상관없이 표현식을 평가하는 도중에 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환되기도 함 ! 이를 “암묵적 타입 변환” 또는 “타입 강제 변환” 이라고 한다.

<aside> 💡

암묵적이란 ? 직접 말이나 글로 표현하지 않았지만 서로가 알고 있는 상태 또는 묵시적으로 동의하거나 이해하고 있는 상태

암묵적 타입 변환에서 암묵적이라는 단어가 쓰인 이유

⇒ 개발자가 명시적으로 타입을 지정하지 않아도 자바스크립트 엔진이 자동으로 판단해서 타입을 처리한다는 뜻에서 암묵적이라는 단어를 사용함.

⇒ 여기서 암묵적 타입 변환을 쉽게 이해하자면

console.log("5" - 2); // 결과는 3이 출력된다.

// 여기서 5는 문자열로 선언되어 있다. 
// 하지만 "-" 연산자는 숫자끼리만 연산이 가능하니까 
// 자바스크립트 엔진에 의하여 문자열 "5"를 숫자 5로 변환하여 
// 『 5 - 2 』의 계산식을 수행 함

</aside>

[ 예제 09 - 02 ]

var x = 10;
var str = x + ' ';
console.log(typeof str, typeof x); // 출력 값 : string number

// 식별자 x에 숫자 10을 대입해줌으로써 x의 type은 number을 가지게 됨 !
// 식별자 str에 number타입을 갖고 있는 x에 문자열을 + 해줌
// 문자열을 number타입인 x에 + 연산자를 계산하였기 때문에
// 자바스크립트 엔진이 암묵적으로 숫자 5를 문자열 5로 변경하여
// str에는 문자열 "10"의 값을 대입해줌