Number, Math, Date

박경빈·2023년 11월 6일
0
post-thumbnail

Number

Number 생성자 함수

표준 빌트인 객체인 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

Number 프로퍼티

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

Number 메서드

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는 수학적인 상수와 함수를 위한 프로퍼티와 메서드를 제공한다. 그러므로 Math은 생성자 함수가 아니고 정적 프로퍼티와 정적메서드만 제공한다.

Math 프로퍼티

1.Math.PI 원주율 PI값을 반환한다.

Math.PI; // 3.141592

Math 메서드

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

표준 빌트인 객체인 Date는 날짜와 시간을 위한 메서드를 제공하는 빌트인 객체이며 생성자 함수이다.

KST(한국 표준시)는 UTC(협정 세계시)에 9시간을 더한 시간이다. 즉, KST는 UTC보다 9시간이 빠르다.

Date 생성자 함수

Date 생성자 함수로 생성한 Date 객체는 기본적으로 현재 날짜와 시간을 나타내는 정수값을 가진다. 현재 날짜와 시간이 아닌 다른 날짜와 시간을 다루고 싶은 경우 Date 생성자 함수에 명시적으로 해당 날짜와 시간 정보를 인수로 지정한다.

1. new 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 (한국 표준시)"

2. new Date(milliseconds)

Date 생성자 함수에 숫자 타입의 밀리초를 인수로 전달하면 1970년 1월 1일 00:00:00(UTC)을 기점으로 인수로 전달된 밀리초만큼 경과한 날짜와 시간을 나타내는 Date 객체를 반환한다.

 new Date(86400000) //Fri Jan 02 1970 09:00:00 GMT+0900 (한국 표준시)

3. new Date(toDateString)

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'

Date 메서드

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까지의 숫자 중 하나를 반환)

profile
꺾여도 하는 마음

0개의 댓글