개발자가 의도적으로 값의 타입을 변환하는 것은 명시적 타입 변환 또는 타입 캐스팅이라고 하고, 개발자의 의도와는 상관없이 표현식을 평가하는 도중에 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환되는 것은 암묵적 타입 변환 또는 타입 강제 변환이라고 한다.
let num = 10;
let str = x.toString();
console.log(typeof str) // string;
let num = 10;
let str = num + ' ';
console.log(typeof str) // string;
타입 변환은 기존 원시 값을 직접 변경하는 것이 아니라,
기존 원시 값을 사용해 다른 타입의 새로운 원시 값을 생성하는 것
자바스크립트 엔진이 표현식을 평가할 때 개발자의 의도와 상관없이 코드의 문맥을 고려하여 암묵적으로 데이터 타입을 강제 변환하는 것
'10' + 2 // -> '102'
5 * '10' // -> 50
!0 // -> true
암묵적 타입 변환 발생시 문자열, 숫자, 불리언과 같은 원시 타입 중 하나로 타입을 자동 변환
1 + '2' // -> '12'
`1 + 1 = ${1 + 1}`
1 * '2' // -> 2
1 - '1' // -> 0
1 / 'one' // -> NaN
'1' > 0 // true
+'1' // 1
+null // -> 0
+undefined // -> NaN
빈 문자열(''), 빈 배열([]), null, false는 0으로, true는 1로 변환된다.
객체와 빈 배열이 아닌 배열, undefined는 변환되지 않아 NaN이 됨