표준 빌트인 객체인 Number
객체는 생성자 함수 객체다. 따라서 new
연산자와 함께 호출하여 Number
인스턴스를 생성할 수 있다.
const numObj = new Number();
console.log(numObj); // Number {[[PrimitiveValue]]: 0}
const numObj1 = new Number(10);
console.log(numObj1); // Number {[[PrimitiveValue]]: 10}
Number
생성자 함수의 인수로 숫자가 아닌 값을 전달하면 인수를 숫자로 강제로 변환해 객체를 생성한다.
let numObj = new Number("10");
console.log(numObj); // Number {[[PrimitiveValue]]: 10}
numObj = new Number("hello"); .// 숫자로 변환 못하면 NaN
console.log(numObj); // Number {[[PrimitiveValue]]: NaN}
new
연산자 사용 하지 않고 Number
생성자 함수 호출하면 인스턴스가 아닌 숫자를 반환한다.
Number("9") // 9
Number("-1"); // -1
Number("10.3"); // 10.3
Number(false); // 0
Number(true); // 1
1.Number.EPSILON
부동소수점으로 인한 오차를 해결해준다.
0.1 + 0.2; // 0.300000000000000000004
0.1 + 0.2 === 0.3; // false
function isEqual(a, b) {
// a와 b를 뺀 값의 절대값이 Number.EPSILON 보다 작으면 같은 값으로 인정한다.
return Math.abs(a - b) < Number.EPSILON;
}
isEqual(0.1 + 0.2, 0.3); // tru
2.Number.MAX_VALUE
는 자바스크립트에서 표현할 수 있는 가장 큰 양수 값이다. 그거보다 큰 수는 Infinity
이다.
Number.MAX_VALUE; // 1.7976931348623157E+308
Infinity > Number.MAX_VALUE; // true
3.Number.MIN_VALUE
는 자바스크립트에서 표현할 수 있는 가장 작은 양수 값이다. 그거보다 작은 수는 0
이다.
Number.MIN_VALUE; // 5E-324
Number.MIN_VALUE > 0; // true
4.Number.MAX_SAFE_INTEGER
는 자바스크립트에서 안전하게 표현할 수 있는 가장 큰 정수 값
Number.MAX_SAFE_INTEGER; // 9007199254740991
5.Number.MIN_SAFE_INTEGER
는 자바스크립트에서 안전하게 표현할 수 있는 가장 작은 정수 값
Number.MIN_SAFE_INTEGER; // -9007199254740991
6.Number.POSITIVE_INFINITY
는 양의 무한대를 나타내는 숫자값 Infinity
Number.POSITIVE_INFINITY; // Infinity
7.Number.NEGATIVE_INFINITY
는 양의 무한대를 나타내는 숫자값 Infinity
Number.NEGATIVE_INFINITY; // -Infinity
8.Number.NaN
숫자가 아님을 나타내는 숫자 값이다.
Number.NaN; // NaN
1.Number.isFinite
는 ES6에서 도입되었고 인수로 전달된 숫자값이 정상적인 유한수, 즉 Infinity
또는 -Infinity
가 아닌지 검사하여 그 결과를 불리언 값으로 반환한다.
Number.isFinite(0); // true
Number.isFinite(Nuber.MAX_VALUE); // true
Number.isFinite(Infinity); // false;
Number.isFinite(-Infinity); // false;
// Number.isFinite와 isFinite 차이
Number.isFinite(null); // false;
// isFinite는 인수를 숫자로 암묵적 타입 변환한다. null은 0으로 암묵적 타입 변환.
isFinite(null); // true
2.Number.isInteger
는 ES6에서 도입되었고 인수로 전달된 숫자값이 정수인지 검사하여 그 결과를 불리언 값으로 반환한다.
Number.isInteger(0) // true
Number.isInteger(123) // true
Number.isInteger(-123) // true
Number.isInteger(0.5) // false
Number.isInteger('123') // false
Number.isInteger(false) // false
Number.isInteger(Infinity) // false
Number.isInteger(-Infinity) // false
3.Number.isNaN
ES6에서 도입되었고 인수로 전달된 숫자값이 NaN
인지 검사하여 그 결과를 불리언 값으로 반환한다.
// 인수가 NaN이면 true를 반환한다.
Number.isNaN(NaN); // true
// Number.isNaN은 인수를 숫자로 암묵적 타입 변환하지 않는다.
Number.isNaN(undefined); // false
// undefined는 NaN으로 암묵적 타입 변환된다.
isNaN(undefined); // true
4.Number.isSafeInteger
ES6에서 도입되었고 인수로 전달된 숫자값이 안전한 정수인지 검사하여 그 결과를 불리언 값으로 반환한다.
Number.isSafeInteger(0); // true
Number.isSafeInteger(1000000000000000); // true
Number.isSafeInteger(10000000000000001); // false
Number.isSafeInteger(0.5); // false
Number.isSafeInteger('123'); // false
Number.isSafeInteger(false); // false
// Infinity/-Infinity는 정수가 아님
Number.isSafeInteger(Infinity); // false
5.Number.prototype.toExponential
메서드는 숫자를 지수표기법으로 변환하여 문자열로 반환한다.
(77.1234).toExponential(); // "7.71234e+1"
(77.1234).toExponential(4); // "7.7123e+1"
(77.1234).toExponential(2); // "7.71e+1"
6.Number.prototype.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"
7.Number.prototype.toPrecision
메서드는 인수로 전달받은 전체 자릿수까지 유효하도록 나머지 자릿수를 반올림하여 문자열로 반환한다.
// 전체 자리수 유효. 인수를 전달하지 않으면 기본값 0이 전달된다.
(12345.6789).toPrecision(); // "12345.6789"
// 전체 1자리수 유효, 나머지 반올림
(12345.6789).toPrecision(1); // "1e+4"
// 전체 2자리수 유효, 나머지 반올림
(12345.6789).toPrecision(2); // "1.2e+4"
// 전체 6자리수 유효, 나머지 반올림
(12345.6789).toPrecision(6); // "12345.7"
8.Number.prototype.toString
메서드는 숫자를 문자열로 변환하여 반환한다.
// 인수를 생략하면 10진수 문자열을 반환한다.
(10).toString(); // "10"
// 2진수 문자열을 반환한다.
(16).toString(2); // "10000"
// 8진수 문자열을 반환한다.
(16).toString(8); // "20"
// 16진수 문자열을 반환한다.
(16).toString(16); // "10"
표준 빌트인 객체인 Math
는 수학적인 상수와 함수를 위한 프로퍼티와 메서드를 제공한다. 그러므로 Math
은 생성자 함수가 아니고 정적 프로퍼티와 정적메서드만 제공한다.
1.Math.PI
원주율 PI값을 반환한다.
Math.PI; // 3.141592
1.Math.abs
메서드는 인수로 전달된 숫자의 절대값을 반환한다.
Math.abs(-1); // 1
Math.abs('-1'); // 1
Math.abs(''); // 0
Math.abs([]); // 0
Math.abs(null); // 0
Math.abs(undefined); // NaN
Math.abs({}); // NaN
Math.abs('string'); // NaN
Math.abs(); // NaN
2.Math.round
메서드는 인수로 전달된 숫자의 소수점 이하를 반올림한 정수 반환한다.
Math.round(1.4); // 1
Math.round(1.6); // 2
Math.round(-1.4); // -1
Math.round(-1.6); // -2
Math.round(1); // 1
Math.round(); // NaN
3.Math.ceil
메서드는 인수로 전달된 숫자의 소수점 이하를 올림한 정수 반환한다.
Math.round(1.4); // 2
Math.round(1.6); // 2
Math.round(-1.4); // -1
Math.round(-1.6); // -1
Math.round(1); // 1
Math.round(); // NaN
4.Math.floor
메서드는 인수로 전달된 숫자의 소수점 이하를 내림한 정수 반환한다.
Math.round(1.4); // 1
Math.round(1.6); // 1
Math.round(-1.4); // -2
Math.round(-1.6); // -2
Math.round(1); // 1
Math.round(); // NaN
5.Math.sqrt
메서드는 인수로 전달된 숫자의 제곱근 반환한다.
Math.sqrt(9); // 3
Math.sqrt(-9); // NaN
Math.sqrt(2); // 1.414213562373095
Math.sqrt(1); // 1
Math.sqrt(0); // 0
Math.sqrt(); // NaN
6.Math.random
메서드는 임의의 난수(랜덤 숫자)를 반환한다.
Math.random(); // 0에서 1 미만의 랜덤 실수(0.8208720231391746)
/*
1에서 10 범위의 랜덤 정수 취득
1) Math.random으로 0에서 1 미만의 랜덤 실수를 구한 다음, 10을 곱해 0에서 10 미만의
랜덤 실수를 구한다.
2) 0에서 10 미만의 랜덤 실수에 1을 더해 1에서 10 범위의 랜덤 실수를 구한다.
3) Math.floor로 1에서 10 범위의 랜덤 실수의 소수점 이하를 떼어 버린 다음 정수를 반환한다.
*/
const random = Math.floor((Math.random() * 10) + 1);
console.log(random); // 1에서 10 범위의 정수
7.Math.pow
메서드는 첫 번째 인수를 밑으로, 두 번째 인수를 지수로 거듭제곱하여 반환한다.
Math.pow(2, 8); // 256
Math.pow(2, -1); // 0.5
Math.pow(2); // NaN
8.Math.max
메서드는 전달받은 인수 중에서 가장 큰 수를 반환한다. 인수가 없으면 -Infinity
를 반환한다.
Math.max(1); // 1
Math.max(1, 2); // 2
Math.max(1, 2, 3); // 3
Math.max(); // -Infinity
9.Math.min
메서드는 전달받은 인수 중에서 가장 작은 수를 반환한다. 인수가 없으면 Infinity
를 반환한다.
Math.min(1); // 1
Math.min(1, 2); // 1
Math.min(1, 2, 3); // 1
Math.min(); // Infinity
표준 빌트인 객체인 Date
는 날짜와 시간을 위한 메서드를 제공하는 빌트인 객체이며 생성자 함수이다.
KST(한국 표준시)는 UTC(협정 세계시)에 9시간을 더한 시간이다. 즉, KST는 UTC보다 9시간이 빠르다.
Date
생성자 함수로 생성한 Date
객체는 기본적으로 현재 날짜와 시간을 나타내는 정수값을 가진다. 현재 날짜와 시간이 아닌 다른 날짜와 시간을 다루고 싶은 경우 Date
생성자 함수에 명시적으로 해당 날짜와 시간 정보를 인수로 지정한다.
Date
생성자 함수를 인수 없이 new
연산자와 함께 호출하면 현재 날짜와 시간을 가지는 Date
객체를 반환한다.
new Date(); // Mon Nov 06 2023 17:43:18 GMT+0900 (한국 표준시)
Date
생성자 함수를 new
연산자 없이 호출하면 Date
객체를 반환하지 않고 날짜와 시간 정보를 나타내는 문자열을 반환한다.
Date(); // "Mon Nov 06 2023 17:43:18 GMT+0900 (한국 표준시)"
Date
생성자 함수에 숫자 타입의 밀리초를 인수로 전달하면 1970년 1월 1일 00:00:00(UTC)을 기점으로 인수로 전달된 밀리초만큼 경과한 날짜와 시간을 나타내는 Date
객체를 반환한다.
new Date(86400000) //Fri Jan 02 1970 09:00:00 GMT+0900 (한국 표준시)
Date
생성자 함수에 날짜와 시간을 나타내는 문자열을 인수로 전달하면 지정된 날짜와 시간을 나타내는 Date
객체를 반환한다.
const today = new Date("2023/11/06/17:50");
today.toString(); // 'Mon Nov 06 2023 17:50:00 GMT+0900 (한국 표준시)'
today.toDateString(); // 'Mon Nov 06 2023'
1.Date.now
1970년 1월 1일 00:00:00(UTC)을 기점으로 현재 시간까지 경과한 밀리초를 숫자로 변환한다.
const now = Date.now(); // 1699261186313
new Date(now); // Mon Nov 06 2023 18:00:00 GMT+0900 (한국 표준시)
2.Date.parse
1970년 1월 1일 00:00:00(UTC)을 기점으로 인수로 전달된 지정 시간(new Date(dateString)의 인수와 동일한 형식)까지의 밀리초를 숫자로 반환한다.
3.Date.prototype.getFullYear
메서드는 연도(네 자릿수 정수)를 반환한다.
4.Date.prototype.getMonth
메서드는 월을 반환한다.(0 ~ 11 정수 반환)
5.Date.prototype.getDate
메서드는 일을 반환한다.(1 ~ 31 정수 반환)
6.Date.prototype.getHours
메서드는 시를 반환한다.(0 ~ 23 정수 반환)
7.Date.prototype.getMinutes
메서드는 분을 반환한다.(0 ~ 59 정수 반환)
8 Date.prototype.getSeconds
메서드는 초를 반환한다.(0 ~ 59 정수 반환)
9.Date.prototype.getMilliseconds
메서드는 밀리초를 반환한다. (0~999 정수 반환)
10.Date.prototype.getDay
메서드는 요일을 반환한다. (일요일을 나타내는 0부터 토요일을 나타내는 6까지의 숫자 중 하나를 반환)