문자열을 숫자로 바꿀때 마다 Number 또는 parseInt 두 함수의 차이점을 모른채 번갈아가며 사용했다. 문자열을 숫자로 타입변환을 해준다는 점에서 두 함수는 동일해 보이지만 다음과 같은 차이점이 있다.
const str = '1234';
Number(str); // 1234
parseInt(str); // 1234
두 함수 모두 '1234'의 숫자 타입인 1234를 반환한다.
const str = '안녕하세요';
Number(str); // NaN
parseInt(str); // NaN
두 함수 모두 NaN(Not a Number)를 반환한다.
const str = '10월 입니다'
Number(str); // NaN
parseInt(str); // 10
Number함수는 NaN을 반환하지만 parseInt는 10일 찾아내 숫자타입 10을 반환한다.
const str = '오늘은 10월 1일';
Number(str); // NaN
parseInt(str); // NaN
두 함수 모두 NaN을 반환한다. parseInt 는 10 또는 1을 반환할 것으로 예상했지만 문자열의 시작이 숫자가 아니면 NaN이 나온다는 것을 알게 되었다.
const str = '2021.1001';
Number(str); // 2021.1001
parseInt(str); // 2021
Number함수는 소수점 까지 처리하지만 parseInt는 정수만을 반환한다. 참고로 실수를 처리하는데는 parseFloat() 함수를 사용하면 된다.
- Number()는 숫자로만 이루어진 문자열을 변환할 수 있다.
- parseInt()는 문자열 내에 숫자를 찾아 타입변환을 하지만 문자열이 숫자가 아닌 타입으로 시작할 때는 NaN을 반환한다.
- 소수점을 처리할 때는 Number() 또는 parseFloat()을 사용하자.