자바스크립트의 모든 값은 타입이 있다.
개발자가 의도적으로 값의 타입을 변환하는 것을 명시적 타입 변환 또는 타입 캐스팅이라고 한다.
var x = 10;
var str = x.toString();
console.log(typeof str, str); // string 10
// x 변수의 값이 변경되지는 않는다.
console.log(typeof x, x); // number 10
개발자의 의도와 상관없이 표현식을 평가하는 도중 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환되기도 한다.
이를 암묵적 타입 변환 또는 타입 강제 변환이라 한다.
var x = 10;
var str = x + '';
console.log(typeof str, str); // string 10
// x 변수의 값이 변경되지는 않는다.
console.log(typeof x, x); // number 10
타입 변환이란 기존 원시 값을 사용해 다른 타입의 새로운 원시 값을 생성하는 것이다.
명시적 타입 변환은 타입을 변경하겠다는 개발자의 의지가 코드에 명백히 드러난다.
다만, 가독성 측면에서 암묵적 타입 변환이 더 좋을 수 있다.
(10).toString()
보다 10 + ''
이 더 간결하고 이해하기 쉽다.
암묵적 타입 변환은 예상하지 못할 수도 있다.
'10' + 2 = '102';
5 * '10' = 50
!0 // true
if (1) { }