본인은 parseInt와 Number를 구별하지 않고 문자열을 숫자로 바꿀때 사용했다. 하지만 사용하면서 두개의 차이점이 궁금해지기 시작했다. 그래서 블로그로 정리해보았다.
1. '0이 반복되고 마지막 숫자 1로 구성된 문자열'을 변환해보았다.
-둘다 숫자1을 숫자로 뽑아내었다. 성공!
let test1 = '000001';
parseInt(test1); //1
Number(test1); //1
2. '2020이라는 숫자와 년도라는 문자로 구성된 문자열' 변환해보았다.
-parseInt()를 사용했을때 2020이라는 숫자를 parse해서 뽑아내었다.
-Number()를 사용하니 NaN(Not a Number)로 문자열이 숫자가 아님을 알려준다. 여기서부터 흥미로워지기 시작했다.
let test = '2020년도';
parseInt(test); // 2020
Number(test); // NaN
3.'제'라는 문자열로 시작하여 숫자1과 '회'라는 문자열을 변환해보았다.
-둘다 NaN(Not a Number)로 숫자가 아니라고 결과가 나온다. 여기서 parseInt도 한계가 있구나 생각했다.
let test = '제1회';
parseInt(test); // NaN
Number(test); // NaN
4. '정수10'인 숫자로 된 문자열에 '소수점으로 길게 늘어진 숫자로 된 문자열'을 변환해보았다.
-parseInt()는 정수만 뽑아서 출력
-Number()는 전체값 출력. 왜냐면 다 숫자이니까!
let test = '10.12345';
parseInt(test); // 10
Number(test); // 10.12345
parseFloat(test); // 10.12345
결론은,
parseInt()는 문자열로 된 부분에서 숫자(정수)만 뽑아서 변환해주는것이 특징이고, Number()은 문자열 전체가 숫자일때 소수점까지 숫자타입으로 가져올 수 있다는것이다.
결론을 내렸지만 복잡하다. 필요할때마다 적재적소로 선택하여 사용하다보면 두개의 차이를 명확히 구분하여 잘 활용할 수 있을것같다.