function solution(a, b) { let date = new Date(`${a} ${b}, 2016`).getDay(); switch (date) { case 0 : return 'SUN'; break; case 1 : return 'MON'; break; case 2 : return 'TUE'; break; case 3 : return 'WED'; break; case 4 : return 'THU'; break; case 5 : return 'FRI'; break; case 6 : return 'SAT'; break; } }
let date = new Date(`${a} ${b}, 2016`);
VSC에서 console.log로 찍어봤을 때와 runJS에서 console.log로 찍었을 때 나오는 생김새가 다르길래 호기심이 생겨서 겸사겸사 반환값의 타입을 확인해봤다.
VSC
runJS
당연히 문자열일거라고 생각했는데, 찾아보니 참조형 데이터타입 중 하나인 Date 객체 타입이었다. new operator는 그동안 종종 사용해왔기에 분명 객체 타입의 인스턴스를 생성한다는 것을 알고 있었다. 섣불리 문자열이라고 판단한 이유에 대해 고민해보니 Date 메소드와 헷갈렸다는 결론이 나왔다. 그래서 리팩토링을 할 때는 Date 메소드를 사용해봤더니 훨씬 깔끔하게 코드를 작성할 수 있었다.
let date = Date(); date.slice(0, 3).toUpperCase();