moment.js를 사용할 때 주의 사항

moment.js에서 주의할 점이 몇 가지 있습니다.

1. 날짜를 계산하는 add, subtract 함수는 moment 객체를 바꿔버립니다.

원소스를 그대로 두고 리턴 값만 변경된 새로운 객체가 넘어오는 것이 아니라 원 소스를 바꿔버립니다. 이 이슈는 처음 moment.js를 쓸 때 많이 하는 실수로 공식 Guide의 첫 번째 섹션(mutability)에서 다루고 있는 내용이 바로 이 이슈입니다. 공식 문서에 나와 있는 예제 코드를 보면 단방에 무슨 말인지 알게 될 겁니다.

var a = moment('2016-01-01'); 
var b = a.add(1, 'week'); 
a.format(); // "2016-01-08T 00:00:00-06:00" 
var a = moment('2016-01-01'); 
var b = a.clone(). add(1, 'week'); 
a.format(); //"2016-01-01 T00:00:00-06:00" 

2. toDate()는 새로운 date객체를 넘기는 것이 아니라 계속 같은 date객체를 사용합니다.

다음 코드를 실행해 보면 결과가 true입니다.

var todayMm = moment(); 
console.log( todayMm.toDate() == todayMm.add(1, 'day'). toDate()) // true!! 

그래서 moment.js 소스를 살펴보니 moment 객체 생성 시에 date객체를 하나 생성해서 쭈~욱 그 date객체를 사용합니다.

1개의 좋아요