일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 30daysdowoonchallenge
- 자바스크립트
- html
- 회고
- 큐
- UX
- 백준
- React
- 해시테이블
- Next.js
- UI
- useState
- 자료구조
- REST_API
- 프로그래머스
- javascript
- 프로토타입
- CSS
- redux
- vercel
- level1
- mysemester
- 카카오
- 운영체제
- 스택
- web
- Til
- 코드스테이츠
- 생활코딩
- superstarjypnation
- Today
- Total
데굴데굴
<JavaScript> parseInt()와 Number()는 어떤 차이가 있을까? 본문
자바스크립트에서 문자를 숫자로 변환하기 위해 사용하는 방법으로는 parseInt()
와 Number()
가 있다. 더 간단하게는 문자 앞에 +
를 붙여 숫자로 바꾸기도 한다.
어쨌든 둘 다 숫자로 변환해주니까 그 동안 아무거나 사용해왔었는데, 오히려 그러다 보니 이 둘은 대체 뭐가 다른건가 하는 의문이 자연스럽게 피어올랐다. 그래서 정리를 한 번 해보려고 한다.
참고 링크
Number()
Number()
는 숫자 객체를 생성하는 생성자 함수이다.
Number(값);
new Number(값);
new
키워드와 함께 Number()
를 사용하면 숫자 객체를 생성하는 생성자 함수처럼 작동한다.
이렇게 만든 숫자 객체의 타입은 숫자가 아니라 객체이다. (자주 쓰이지 않는다고 한다.)
// example
let n = new Number(7);
console.log(n); // Number {7}
console.log(typeof n) // 'object'
let n2 = Number('7');
console.log(n2); // 7
console.log(typeof n2); // 'number'
반면 Number()
는 인자로 들어온 값을 number 타입으로 변환해준다.
변환될 수 없는 값이 들어오면 NaN
(Not a Number)을 리턴한다.
parseInt()
parseInt()
는 문자열 타입의 매개변수를 정수로 리턴해주는 함수이다.Number()
와는 달리 두 가지 매개변수를 받을 수 있으며, 두 번째 매개변수는 옵션이다.
parseInt(string);
parseInt(string, radix);
radix
는 진수를 의미한다. 값을 지정하지 않으면 전달받은 string
을 기반으로 추론하여 변환한다. (10진수가 디폴트가 아니다.) 따라서 웬만하면 직접 지정해주는 것이 좋다고 한다. radix
에는 2부터 36까지의 숫자만 쓸 수 있으며 이 범위를 벗어나면 숫자로 변환될 수 없다.
(Number.prototype.toString()
은 특정 진수로 변환된 문자열을 리턴한다.)
숫자와 다른 문자가 섞였을 때 (e 제외)
Number()
: 변환하지 못하고NaN
을 리턴한다.Number('13px'); // NaN
parseInt()
: 무시하고 숫자만 찾아내 그것만 숫자로 바꾸어 리턴한다. 16진수의 경우 대소문자 상관없이 숫자로 파싱하여 리턴한다.parseInt('13px', 10); // 13 parseInt('F', 16); // 15 parseInt('344', 2) // NaN
radix
를 2로 설정해 변환할 문자열이 이진수의 형태임을 미리 암시했다면 해당string
에는 0과 1만 포함되어야 한다. 다른 수가 들어가면 변환하지 못하고NaN
을 리턴한다.
truthy
, falsy
값이 들어왔을 때
Number()
: 값의 참/거짓 여부에 따라 1과 0을 반환한다. 단,undefined
는NaN
을 리턴한다.Number(null); // 0 Number(true); // 1 Number(undefined); // NaN
parseInt()
:NaN
을 리턴한다.parseInt(null) // NaN parseInt(undefined) // NaN parseInt(true) // NaN
단항 연산자 (unary operator) +
숫자를 할당한 변수 앞에 붙이면 변수의 값(숫자)을 리턴한다.
const a = -4;
const b = 4;
console.log(+a); // -4
console.log(+b); // 4
숫자가 아닌 값에 붙이면 해당 값을 숫자로 변환하여 리턴한다. 16진수도 지원한다. Number()
와 마찬가지로 undefined
는 NaN
을 리턴한다.
+true // 1
+'21' // 21
+false // 0
+'0x1F' // 31
+undefined // NaN
'Programming > JavaScript' 카테고리의 다른 글
<JavaScript> 스코프 (1) | 2023.11.11 |
---|---|
<JavaScript> 정렬의 비교 함수는 어떻게 동작하는가 (0) | 2023.07.25 |
<JavaScript> e.stopPropagation()과 e.preventDefault() (0) | 2023.02.16 |
<JavaScript> 프로토타입 체인 (0) | 2022.09.22 |
<JavaScript> 프로토타입 (0) | 2022.09.21 |