본문 바로가기
Woowa Techcourse/Missions

Number(str) vs parseInt(str)

by mingule 2021. 2. 13.

나는 지금껏 String으로 받은 숫자들을 거의 다 ParseInt를 통해 형변환을 시켰었는데, 두 내장 함수의 다른점을 알고 있어야 조금 더 상황에 맞게 쓸 수 있을 것 같아서 정리해보게 되었다. 두 함수는 비슷하면서도 꽤나 달랐다.

 

먼저, 두 함수는 문자열을 인자로 받으면, 해당 문자열을 숫자로 바꾸어 준다는 점에서 같은 역할을 수행한다.

Number(str)

Number 함수는 문자열이 정수이든, 소수이든 상관 없이 잘 바꾸어준다.

하지만 문자열에 문자가 하나라도 들어가게 된다면, NaN(Not a Number)을 리턴한다. 만약 문자가 공백으로 시작한다면, 알아서 공백을 무시해준다.

parseInt(str, n) - parseInt(바꿀 문자열, 진법)

parseInt 함수는 문자열이 정수일 때에는 잘 바꾸어주지만, 소수라면 소수점 이하는 출력하지 못한다. 소수점 이하를 출력하는 함수로는 parseFloat이 따로 있다. 

그리고 문자열이 숫자로 시작하는 경우에는 숫자가 끝날때 까지만 형변환을 해 변수에 저장해준다. 만약 문자가 공백으로 시작한다면, 알아서 공백을 무시한다. 만약 문자열이 숫자로 시작하지 않으면, Number(str)와 마찬가지로 변수에 NaN(Not a Number)을 리턴한다. 

parseInt(str, n) 에서 진법은 옵션인데, 만약 아무것도 써주지 않는다면 10진법으로 나타내준다.

 

(좌) Number 예시 / (우) parseInt 예시
(좌) Number 예시 / (우) parseInt 예시

만약 문자열이 100% 숫자로만 이루어졌다면 Number을 쓰는게 좋을 것이고, 문자열의 끝에 문자가 붙게된다면 parseInt를 써야 할 것 같다. 지금까지 진행했던 미션들, Calculator와 자동차 경주 게임에서는 100% 숫자가 들어오는 상황이었는데, parseInt를 썼었다. 이런 상황에서는 Number 함수를 쓰는 것이 더 좋았을 것 같다. 

 

다음부터는 이런 작은 함수도 조금 더 신경써서 기능을 만들어 나가야겠다. 

댓글