나는 학교에서 가르침을 받을때도, parseInt()만 배워서 Number()라는 것이 있는 줄 몰랐다.
알고리즘 문제를 풀면서, 내가 parseInt()를 사용한 자리에 Number()를 사용한 사람들을 보고 의구심이 들었다.
과연 둘은 어떻게 다를까?
Number(str)
- 만약 str을 숫자로 변환할 수 없으면 NaN을 리턴한다.
- 생성자로써 사용하지 않으면(new 연산자를 사용하지 않으면) Number를 사용하여 형변환을 할 수 있다.
const num1 = Number("100입니다"); // NaN을 리턴한다.
const num2 = Number("100"); // 숫자 100을 리턴한다, num2 === 100 은 true.
const num3 = new Number("100") // num3 === 100 은 false.
num2는 숫자로 형변환 되어서 숫자인 100과 값도 같고, 타입도 같지만,
num3는 새로운 '객체'를 만든 것 이어서, 객체로 리턴이 된다.
( '==='은 타입과 값이 모두 같아야 true이다.)
parseInt(str)
- 첫 번째 글자가 숫자로 변환될 수 없다면, parseInt 는 NaN을 리턴한다.
- str에 숫자와 글자가 혼합된 경우, 글자 전까지만 변환하고 그 뒤는 무시한다.
const num1 = parseInt("100입니다"); // 숫자 100을 리턴한다, "입니다"는 무시한다.
const num2 = parseInt("숫자100입니다"); // NaN을 리턴한다.
const num3 = parseInt("100"); // 숫자 100을 리턴한다.
'Web > Vanilla JS' 카테고리의 다른 글
Modern Javascript / 코드 품질 - Chrome으로 디버깅 (0) | 2021.07.07 |
---|---|
Modern Javascript / 자료구조와 자료형 (0) | 2021.07.01 |
Modern Javascript / 객체: 기본 (0) | 2021.06.29 |
Modern Javascript / 자바스크립트 기본 (0) | 2021.06.28 |