데이터 타입을 다른 타입으로 바꾸는 일은 매우 자주 하는 작업.
사용자 입력이나 다른 시스템에서 가져온 데이터를 그대로 쓸 수 있는 경우는 별로 없고, 대개 변환해야 합니다.
Number 객체 생성자를 사용하는 방법.
const numStr = "33.3";
const num = NUmber(numStr); // 이 행은 숫자 값을 만듭니다.
// Number 객체의 인스턴스가 아닙니다.
✔️ 숫자로 바꿀 수 없는 문자열에서는 NaN 반환.
내장 함수인 parseInt나 parseFloat 함수를 사용하는 방법.
Number 생성자와 비슷하게 동작하지만 몇 가지 다른 점이 있습니다.
✔️ parseInt 를 사용할 때는 기수radix 를 넘길 수 있습니다.
기수
✔️ parseInt, parseFloat
➜ 모두 숫자로 판단할 수 있는 부분까지만 변환하고, 그 뒤에 있는 문자열은 무시.
➜ 따라서 문자열의 형태가 엉망진창이어도 입력값으로 쓸 수 있습니다.
const a = parseInt("16 volts", 10); // " volts"는 무시됨. 10진수 16.
const b = parseInt("3a", 16); // 16진수 3a를 10진수로 바꿈. 결과: 58
const c = parseFloat("15.5 kph"); // " kph"는 무시됨.
// parseFloat는 항상 기수가 10이라고 가정함.
Date 객체를 숫자로 바꿀 때는 valueOf() 메서드를 사용.
이 숫자는 UTC 1970년 1월 1일 자정으로부터 몇 밀리초가 지났는지 나타내는 숫자.
const d = new Date(); // 현재 날짜
const ts = d.valueOf(); // UTC 1970년 1월 1일 자정으로부터
// 몇 밀리초가 지났는지 나타내는 숫자.
불리언 값을 1(true)이나 0(false)으로 변환할 때는 조건 연산자를 사용.
const b = true;
const n = b ? 1 : 0;
✔️ 자바스크립트의 모든 객체에는 문자열 표현을 반환하는 toString() 메서드가 있습니다.
✔️ 문자열 병합에서 자동으로 숫자를 문자열로 변환.
➜ 숫자를 문자열로 직접 바꿀 일이 생각보다 많지 않습니다.
const n = 33.5;
n; // 33.5 - 숫자
const s = n.toString();
s; // "33.5" - 문자열
Date객체의 toString() 메서드. ➜ 좀 길긴 하지만 쓸만한 결과를 반환.
하지만 대부분의 객체는 아무짝에도 쓸모없는 문자열 "[object Object]" 반환.
객체의 toString() 메서드를 수정해서 더 유용한 문자열 표현을 반환하게 할 수 있습니다.
배열의 toString() 메서드.
➜ ✔️ 각 요소를 문자열로 바꾼 다음 쉼표로 연결한 문자열을 반환.
const arr = [1, true, "hello"];
arr.toString(); // "1,true,hello"
✔️ 부정not 연산자(!) 를 사용하여 모든 값을 불리언으로 바꿀 수 있습니다.
✔️ 부정 연산자를 한 번 사용하면 '참 같은 값'은 false로 바뀝니다. (부정 연산자를 한 번 더 쓰면 true)
✔️ 숫자형 변환과 마찬가지로 Boolean 생성자를 써도 결과는 같습니다.
const n = 0; // 거짓 같은 값
const b1 = !!n; // false
const b2 = Boolean(n); // false