문자열이 숫자 문맥에 사용되면 자동으로 숫자로 변환된다. 이것은, 예를 들어 다음 코드가 실제로 잘 작동한다는 것을 의미한다.
이 점을 활용하면 문자열에서 0을 빼는 방법으로 간단히 문자열을 숫자로 변환 할 수 있다.
(그러나 문자열 값에 0을 더하면 타입 변환이 수행되는 것이 아니라 문자열 이어붙이기가 수행된다는 것을 주의하라.)
위와 같은 편법을 사용하지 않고 문자열을 숫자로 명시적으로 변환하는 방법은 Number() 생성자를 함수처럼 호출하는 것이다.
이 문자열/숫자 변환 방법의 문제는 문자열/숫자 변환에 지나치게 엄격한 규칙이 적용된다는 것이다. 이 변환 방법은 10진수만 제대로 변환할 수 있고, 문자열 내에서 앞부분이나 뒷부분에는 스페이스 문자들이 나타날 수 있지만 숫자 다음에는 스페이스 외의 문자들이 나타날 수 없다.
좀 더 융통성 있는 변환 방법이 필요하다면 parseInt()와 parseFloat()를 사용하라. 이 함수들은 문자열 내에 존재하는 어떤 형태의 숫자라도 변환하여 반환하고 숫자 다음에 나오는 숫자가 아닌 문자들은 모두 무시한다. parseInt()는 정수만 변환할 수 있지만 parseFloat()는 정수와 부동소수점 숫자를 모두 변환할 수 있다. 만약 문자열이 '0x'나 '0X'로 시작하면 parseInt()는 문자열을 16진수 숫자로 인식한다.[각주:1] 예를 들어,
parseInt()는 변환하려는 숫자의 기수를 지정하는 두 번째 전달인자를 받기도 한다. 기수 값으로는 2에서 36 사이에 있는 값을 지정할 수 있다. 예를 들어,
parseInt()와 parseFloat()는 지정된 문자열을 숫자로 변환하지 못할 경우 NaN을 반환한다.
ECMAScript 명세에는 문자열이 '0' ('0x'나 '0X'가 아니라)으로 시작하면 parseInt()는 문자열을 8진수나 10진수로 인식할 수 있다고 나와 있다. 명세에는 이 부분에 대한 정확한 작동 방식이 나와 있지 않으므로, 직접 기수를 지정하려는 경우가 아니라면 0으로 시작되는 숫자를 변환하는 데 parseInt()를 절대로 사용하지 말라. [본문으로]