일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 모던 자바스크립트 Deep Dive TIL
- useEffect return
- 개발자 특강
- 모던 javascript Deep Dive
- Frontend Roadmap
- 프로그래머스 K_Digital Training 프론트엔드
- 투포인터알고리즘 js
- Vue3 Router
- 프로그래머스 K_Digital Training
- 우테캠 회고록
- frontend roadmap study
- 머쓱이
- 모던 자바스크립트 딥다이브
- 인프런 자바스크립트 알고리즘 문제풀이
- 리팩토링 회고
- Vue3
- react 프로젝트 리팩토링
- 프로그래머스 데브코스
- useRef 지역 변수
- 백준 js
- KDT 프로그래머스 데브코스 프론트엔드
- react customHook 예시
- TypeScript 문법 소개
- 프로그래머스 데브코스 프론트엔드 TIL
- KDT 프로그래머스
- 프로그래머스 데브코스 프론트엔드
- 모던 자바스크립트 TIL
- 모던 자바스크립트 Deep Dive
- K_Digital Training
- 백준 node.js
- Today
- Total
프론트엔드 개발자의 기록 공간
[JavaScript DeepDive] 28장_Number 본문
표준 빌트인 객체인 Number는 원시타입인 숫자를 다룰 때 유용한 프로퍼티와 메서드를 제공한다.
✍ Number 생성자 함수
Number 객체는 생성자 함수 객체다. 따라서 new 연산자와 함께 호출하여 Number 인스턴스를 생성 할 수 있다. Number 생성자 함수에 인수를 전달하지 않고 new 연산자와 함께 호출하면 [[NumberData]] 내부 슬롯에 0을 할당한 Number 래퍼 객체를 생성한다.
const numObj = new Number();
console.log(numObj); // Number {[[PrimitiveValue]]: 0}
const numObj = new Number(10); // 값을 할당한 경우
console.log(numObj); // Number {[[PrimitiveValue]]: 10}
Number 생성자 함수의 인수로 숫자가 아닌 값을 전달하면 인수를 숫자로 강제 변환 후, 할당한다.
숫자로 변환 할 수 없다면 NaN을 할당한다.
let numObj = new Number('10');
console.log(numObj); // Number {[[PrimitiveValue]]: 10}
numObj = new Number('Hello');
console.log(numObj); // Number {[[PrimitiveValue]]: NaN}
new 연산자를 사용하지 않고 Number 생성자 함수를 호출하면 Number 인스턴스가 아닌 숫자를 반환한다. 이를 이용하여 명시적으로 타입을 변환하기도 한다.
// 문자열 타입 => 숫자 타입
Number('0'); // -> 0
Number('-1'); // -> -1
Number('10.53'); // -> 10.53
// 불리언 타입 => 숫자 타입
Number(true); // -> 1
Number(false); // -> 0
✍ Number 메서드
📌 Number.isInteger
ES6에서 도입된 Number.isInteger 정적 메서드는 인수로 전달된 숫자값이 정수인지 검사하여 그 결과를 불리언 값으로 반환한다. 검사하기 전에 인수를 숫자로 암묵적 타입 변환하지 않는다.
// 인수가 정수이면 true를 반환한다.
Number.isInteger(0) // -> true
Number.isInteger(123) // -> true
Number.isInteger(-123) // -> true
// 0.5는 정수가 아니다.
Number.isInteger(0.5) // -> false
// '123'을 숫자로 암묵적 타입 변환하지 않는다.
Number.isInteger('123') // -> false
// false를 숫자로 암묵적 타입 변환하지 않는다.
Number.isInteger(false) // -> false
// Infinity/-Infinity는 정수가 아니다.
Number.isInteger(Infinity) // -> false
Number.isInteger(-Infinity) // -> false
📌 Number.isNaN
ES6에서 도입된 Number.isNaN 정적 메서드는 인수로 전달된 숫자값이 NaN인지 검사하여 그 결과를 불리언 값으로 반환한다.
// 인수가 NaN이면 true를 반환한다.
Number.isNaN(NaN); // -> true
Number.isNaN 메서드는 빌트인 전역 함수 isNaN과 차이가 있다. 빌트인 전역 함수 isNaN은 전달받은 인수를 숫자로 암묵적 타입 변환하고 검사를 수행하지만 Number.isNaN 메서드는 변환하지 않는다.
// Number.isNaN은 인수를 숫자로 암묵적 타입 변환하지 않는다.
Number.isNaN(undefined); // -> false
// isFinite는 인수를 숫자로 암묵적 타입 변환한다. undefined는 NaN으로 암묵적 타입 변환된다.
isNaN(undefined); // -> true
📌 Number.prototype.toFixed
toFixed 메서드는 숫자를 반올림하여 문자열로 반환한다. 반올림하는 소수점 이하 자릿수를 나타내는 0~20 사이의 정수값을 인수로 전달할 수 있다. 인수를 생략하면 기본값이 0이 지정된다.
// 소수점 이하 반올림. 인수를 생략하면 기본값 0이 지정된다.
(12345.6789).toFixed(); // -> "12346"
// 소수점 이하 1자리수 유효, 나머지 반올림
(12345.6789).toFixed(1); // -> "12345.7"
// 소수점 이하 2자리수 유효, 나머지 반올림
(12345.6789).toFixed(2); // -> "12345.68"
// 소수점 이하 3자리수 유효, 나머지 반올림
(12345.6789).toFixed(3); // -> "12345.679"
📌 Number.prototype.toString
toString 메서드는 숫자를 문자열로 변환하여 반환한다. 진법을 나타내는 2~36 사이의 정수값을 인수로 전달할 수 있다. 인수를 생략하면 기본값 10진법이 지정된다.
// 인수를 생략하면 10진수 문자열을 반환한다.
(10).toString(); // -> "10"
// 2진수 문자열을 반환한다.
(16).toString(2); // -> "10000"
// 8진수 문자열을 반환한다.
(16).toString(8); // -> "20"
// 16진수 문자열을 반환한다.
(16).toString(16); // -> "10"
👨💻 이번 장은 쉬어가는 느낌의 단원이었다... 여러 개의 메서드와 프로퍼티가 있었지만 자주 사용하는 것들만 대략 작성했다.
'모던 자바스크립트 Deep Dive' 카테고리의 다른 글
[JavaScript DeepDive] 30장_Date (0) | 2022.03.02 |
---|---|
[JavaScript DeepDive] 29장_Math (0) | 2022.03.01 |
[JavaScript DeepDive] 27장_배열 (0) | 2022.02.28 |
[JavaScript DeepDive] 26장_ES6 함수의 추가 기능 (0) | 2022.02.23 |
[JavaScript DeepDive] 25장_클래스 (0) | 2022.02.21 |