9.1 타입 변환이란?

<aside> 💡 명시적 타입 변환 (타입 캐스팅) : 의도적으로 타입을 변환하는 것 암묵적 타입 변환 (타입 강제 변환) : 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환 되는 것

</aside>

var x = 10;
var str = x + '';

console.log(typeof str, str); // string 10
console.log(x); // number 10

암묵적 타입 변환은 기존 변수 값을 재할당하여 변환하는 것이 아님

9.2 암묵적 타입 변환

문자열 타입으로 변환

// 숫자 타입
0 + '' // -> "0"
-0 + '' // -> "0"
NaN + '' // -> "NaN"
Infinity + '' // -> "Infinity"
-Infinity + '' // -> "-Infinity"

// 불리언 타입
true + '' // -> "true"
false + '' // -> "false"

// null 타입
null + '' // -> "null"

// undefined 타입
undefined + '' // "undefined"

// 심벌 타입
(Symbol()) + '' // TypeError: Cannot convert a Symbol value to a string

// 객체 타입
({}) + '' // -> "[object Object]"
Math + '' // -> "[object Math]"
[] + '' // -> ""
[10, 20] + '' // -> "10,20"
(functio(){}) + '' // -> "function(){}"
Array + '' // -> "function Array() { [native code] }"}

숫자 타입으로 변환

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

// 문자열 타입
+'' // -> 0
+'0' // -> 0
+'1' // -> 1
+'string' // -> NaN

// 불리언 타입
+true // -> 1
+false // -> 0

// null 타입
+null // -> 0

// undefined 타입
+undefined // -> NaN

// 심벌 타입
+Symbol() // -> TypeError: Cannot convert a symbol value to a number

// 객체 타입
+{} // -> NaN
+[] // -> 0
+[10, 20] // -> NaN
+(function(){}) // -> NaN

+단한 연상자를 사용하면 숫자로 타입으로 암묵적 변환을 할 수 있다.

불리언 타입으로 변환

if ('') // false
if (true) // true
if (0) // false
if ('str') // true
if (null) // false

<aside> 💡 자바스크립트 엔진은 불리언 타입이 아닌 값을 Truthy 값 또는 Falsy 값으로 구분한다.

</aside>

9.3 명시적 타입 변환

<aside> 💡 표준 빌트인 생성자 함수(String, Number, Boolean)를 사용하는 방법 메서드 혹은 함수를 사용하는 방법

</aside>