나는 지금껏 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진법으로 나타내준다.
만약 문자열이 100% 숫자로만 이루어졌다면 Number을 쓰는게 좋을 것이고, 문자열의 끝에 문자가 붙게된다면 parseInt를 써야 할 것 같다. 지금까지 진행했던 미션들, Calculator와 자동차 경주 게임에서는 100% 숫자가 들어오는 상황이었는데, parseInt를 썼었다. 이런 상황에서는 Number 함수를 쓰는 것이 더 좋았을 것 같다.
다음부터는 이런 작은 함수도 조금 더 신경써서 기능을 만들어 나가야겠다.
'Woowa Techcourse > Missions' 카테고리의 다른 글
Javascript IIFE(Immediately Invoked Function Expression) (0) | 2021.03.10 |
---|---|
Javascript 호출 스택(Call Stack) (0) | 2021.03.04 |
[코드리뷰] 자동차 경주 게임 (2) | 2021.02.15 |
TDD, BDD를 위한 테스트 도구, Cypress (0) | 2021.02.11 |
TDD, BDD란? (4) | 2021.02.10 |
댓글