JavaScript/객체

[JavaScript]Date와 new Date 차이점

DevStory 2021. 12. 22.

이번 포스팅에서는 Date, Date(), new Date()의 차이점을 소개합니다.

 


Date

ECMAScript의 타입에는 Date 타입이 존재하지 않으며, 아래 8개의 타입이 존재합니다.

  • undefined
  • null
  • boolean
  • string
  • symbol
  • number
  • bigint
  • object

값의 타입을 반환하는 typeof 연산자는 값의 정확한 타입을 반환하지 않는 문제가 있습니다.

 

typeof 연산자로 null의 타입을 확인하면 'object'가 반환되지만, instanceof 연산자로 null 타입이 Object인지 확인하면 false가 반환됩니다.

typeof null
// 'object'

null instanceof Object
// false

 

ECMAScript는 내장 객체인 Date를 생성자 함수로 호출할 수 있습니다.

 

다음은 typeof 연산자로 내장 객체인 Date 타입을 확인하는 예제입니다.

typeof Date
// 'function'

typeof 연산자는 생성자 함수로 호출할 수 있는 객체를 'function'으로 반환합니다.

 

정확한 타입을 확인하려면 instanceof 연산자를 사용합니다.

Date instanceof Object
// true

Date instanceof Function
// true

typeofinstanceof의 차이점, typeof가 함수 객체를 'function'으로 반환하는 이유에 대해서는 추후 포스팅할 예정이며, Date는 "생성자 함수가 존재하는 내장 객체"라고 이해하면 됩니다.


Date()

new 키워드가 없는 Date() 함수는 인수를 무시하며, 현재 날짜 및 시간을 나타내는 문자열을 반환합니다.

Date('asd')
// 'Wed Dec 22 2021 19:58:27 GMT+0900 (한국 표준시)'

Date()
// 'Wed Dec 22 2021 19:59:10 GMT+0900 (한국 표준시)'

다음은 typeof 연산자를 사용하여 문자열이 반환되는지 확인하는 예제입니다.

typeof Date()
// 'string'

new Date()

new 키워드를 사용한 new Date()는 Date 타입인 새로운 객체를 생성합니다.

 

인수를 생략하면, 현재 날짜 및 시간을 나타내는 Date 객체가 생성됩니다. 인자를 전달하면 인자 형태에 따라 Date 객체가 생성됩니다. Date 생성자의 인자 형태는 다음 네 가지입니다.

  • 값을 생략
  • UNIX 타임 스태프 값
  • 타임 스태프 문자열
  • 개별 날짜 및 시간

다음은 new Date()를 사용하여 Date 객체를 생성하는 예제입니다.

new Date();
// Thu Dec 23 2021 00:24:26 GMT+0900 (한국 표준시)

new Date('2020-01-01');
// Wed Jan 01 2020 09:00:00 GMT+0900 (한국 표준시)

new Date(2021, 11, 23);
// Thu Dec 23 2021 00:00:00 GMT+0900 (한국 표준시)

new Date(2021, 11, 23, 12, 23, 00);
// Thu Dec 23 2021 12:23:00 GMT+0900 (한국 표준시)

다음은 typeof 연산자를 사용하여 객체가 반환되는지 확인하는 예제입니다.

typeof new Date()
// 'object'

 

반응형

댓글