문자열을 숫자로 바꾸기
문자열을 숫자로 바꿔야 할 경우가 많습니다.
사용자에게 받은 입력은 보통 문자열로, 자바스크립트에는 문자열을 숫자로 바꾸는 방법이 몇 가지 있습니다.
첫 번째는 Number 객체 생성자를 사용하는 방법입니다.
(보통 생성자를 사용할 때는 항상 new 키워드를 사용하며, new 키워드에 대해서는 9장에서 설명합니다. 여기서 사용하는 방법은 예외입니다.)
const numStr = "33.3";
const num = Number(numStr); // 이 행은 숫자 값을 만듭니다.
// Number 객체의 인스턴스가 아닙니다.
숫자로 바꿀 수 없는 문자열에서는 NaN이 반환됩니다.
두 번째 방법은 내장 함수인 parseInt나 parseFloat 함수를 사용하는 방법입니다.
이들은 Number 생성자와 비슷하게 동작하지만 몇 가지 다른 점이 있습니다.
parseInt를 사용할 때는 기수(radix) 를 넘길 수 있습니다.
기수는 변환할 문자열이 몇 진수 표현인지 지정합니다.
예를 들어 16진수를 변환할 때는 기수로 16을 넘깁니다.
기수 기본값은 10이므로 10진수 표현을 변환할 때는 기수를 쓰지 않아도 결과는 같지만, 항상 기수를 명시하길 권합니다.
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 객체를 숫자로 바꾸기
Date 객체를 숫자로 바꿀 때는 valueOf() 메서드를 사용합니다.
이 숫자는 UTC 1970년 1월 1일 자정으로부터 몇 밀리초가 지났는지 나타내는 숫자입니다.
const d = new Date(); // 현재 날짜
const ts = d.valueOf(); // UTC 1970년 1월 1일 자정으로부터
// 몇 밀리초가 지났는지 나타내는 숫자
불리언 값을 1 또는 0으로 바꾸기
불리언을 1 (true)이나 0(false)으로 바꿔야 할 때도 있습니다.
이렇게 변환할 때는 조건 연산자를 사용합니다.
조건 연산자는 5장에서 설명합니다.
const b = true;
const n = b ? 1:0;