🔸 개발자가 의도적으로 값의 타입을 변환 하는것을 명시적 타입 변환 또는 타입 캐스팅 이라 한다.
let x = 10;
// 명시적 타입변환
// 숫자를 문자열로 타입 캐스팅 한다.
let str = x.toString();
console.log(typeof x,x) // number 10
개발자의 의도와는 상관없이 표현식을 평가하는 도중에 자바스크립트 엔진에 의해 암묵적으로 타입이 자동변환 되는것을
암묵적 타입변환 또는 타입 강제 변환 이라 한다.
let x = 10;
// 암묵적 타입변환
// 문자열 연결 연산자는 숫자 타입 x의 값을 바탕으로 새로운 문자열을 생성한다.
let str = x + '';
console.log(typeof str,str); // string 10
//x 변수의 값이 변경된 것은 아니다.
console.log(typeof x,x); // number 10
🔹 명시적 타입 변환이나 암묵적 타입 변환이 기존 원시값을 직접 변경하는 것은 아니다.
원시값은 변경 불가능한 값이므로 변경할수 없다.
타입 변환이란 기존 원시값을 사용해 다른 타입의 새로운 원시 값을 생성하는 것이다.
🔹 암묵적 타입 변환은 기존 변수 값을 재할당하여 변경하는것이 아니다.
자바스크립트 엔진은 표현식을 에러 없이 평가하기 위해 피연산자의 값을 암묵적 타입 변환해 새로운 타입의 값을 만들어 단 한 번 사용하고 버린다.
자신이 작성한 코드에서 암묵적 타입변환이 발생하는지,
발생한다면 어떤 타입의 어떤값으로 변환 되는지,
그리고 타입 변환된 값으로 표현식이 어떻게 평가 될것인지 예측 가능해야 한다. 만약 타입 변환 결과를 예측하지 못하거나 예측이 결과와 일치하지 않는다면 오류를 생산할 가능성이 높아진다.