<aside> 💡 명시적 타입 변환 (타입 캐스팅) : 의도적으로 타입을 변환하는 것 암묵적 타입 변환 (타입 강제 변환) : 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환 되는 것
</aside>
var x = 10;
var str = x + '';
console.log(typeof str, str); // string 10
console.log(x); // number 10
암묵적 타입 변환은 기존 변수 값을 재할당하여 변환하는 것이 아님
문자열 타입으로 변환
// 숫자 타입
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>
<aside> 💡 표준 빌트인 생성자 함수(String, Number, Boolean)를 사용하는 방법 메서드 혹은 함수를 사용하는 방법
</aside>