parseInt vs Number 싸우면 누가 이김?

물고기씨·2024년 4월 1일
post-thumbnail

parseInt, Number 두 가지는 간단하게 말하면 문자열을 숫자로 변환한다.
하지만 약간 다른 방식으로 동작한다.

🍀 parseInt

parseInt는 문자열을 왼쪽에서 오른쪽으로 읽으면서 처음으로 숫자가 아닌 문자를 만나면 그 위치에서 파싱을 중단하고, 그때까지 파싱한 숫자를 반환한다.
만약 문자열이 숫자로 시작하지 않는다면 parseInt는 NaN을 반환한다.

parseInt('123abc'); // 123
parseInt('abc123'); // NaN

🌿 Number

반면에 Number는 문자열 전체가 유효한 숫자 형식이어야 한다. 그렇지 않으면 NaN을 반환한다.

Number('123abc'); // NaN
Number('123'); // 123

🙄 그럼 뭘 써요

parseInt는 인수가 항상 유효한 숫자 형식의 문자열을 반환한다는 보장이 없을 때 사용하면 좋다.
예를 들면 substring으로 어떤 복합 데이터를 추출할 때 parseInt를 사용하면 좀 더 안전하게 추출할 수 있다.

😎 하지만 성능은 Number가 더 좋다

parseInt는 추가적인 처리(문자열을 왼쪽에서 오른쪽으로 읽으면서 숫자가 아닌 문자를 찾는 등)를 수행하기 때문이다.
물론 그 차이는 크지 않다.

🫡 목적에 맞게 쓸 것

parseInt는 이외에도 정수 반환, 진법 변환 등 활용할 수 있는 것들이 많다. 엄청 쓸만하다.
Number도 소수점까지 숫자 변환 등 활용도가 있다.
각각 겹치지 않는 부분이 있으니 상황에 따라 사용하자. 교집합 부분의 경우 차이는 알고 쓰자.

profile
frontend

0개의 댓글