Date 객체에는 현지 시간을 기준으로 특정 날짜의 요일을 반환하는 getDay 메서드가 있습니다. 반환 값의 범위는 각각 일요일부터 토요일에 해당하는 0부터 6까지입니다.
getDay 0 1 2 3 4 5 6
요일 일요일 월요일 화요일 수요일 목요일 금요일 토요일
날짜 관련 요구사항을 사용할 때 getDay에서 반환된 값을 요일로 변환해야 합니다. 즉, "오늘"은 어떤 요일인가요? 예를 들어 달력 구성 요소에서 달력을 선택하면 "2014-12-22 Monday"가 반환됩니다.
아직 온라인에서 실행되고 있는 코드입니다
/*
* Date 객체를 기준으로 요일을 반환합니다
* @param {Date} 날짜
* @return {String} "수요일"
*/
함수 getChinaWeekByDate(날짜) {
var numWeekDay = date.getDay();
If (numWeekDay == 0) {
'일요일'을 반환합니다.
} else if (numWeekDay == 1) {
'월요일'을 반환합니다.
} else if (numWeekDay == 2) {
'화요일'을 반환합니다.
} else if (numWeekDay == 3) {
'수요일'을 반환합니다.
} else if (numWeekDay == 4) {
'목요일'을 반환합니다.
} else if (numWeekDay == 5) {
'금요일'을 반환합니다.
} else if (numWeekDay == 6) {
'토요일'을 반환합니다.
} 그 밖의 {
'' 반환;
}
}
이 코드는 여러 if else 분기로 판단하여 요일을 반환합니다. 일부 학생들은 스위치를 사용하여 최적화할 수 있다고 언급했습니다.
/*
* Date 객체를 기준으로 요일을 반환합니다
* @param {Date} 날짜
* @return {String} "수요일"
*/
함수 getChinaWeekByDate(날짜) {
var numWeekDay = date.getDay();
스위치(numWeekDay) {
사례 0: '일요일'을 반환합니다.
사례 1: '월요일' 반환;
사례 2: '화요일' 반환;
사례 3: '수요일'을 반환합니다.
사례 4: '목요일'을 반환합니다.
사례 5: '금요일'을 반환합니다.
사례 6: '토요일' 반환;
기본값: '' 반환;
}
}
if/else에 비해 코드가 훨씬 간단하고 짧으며 명확합니다. 누군가는 코드가 짧을수록 뇌의 사고 시간이 짧아진다는 통계를 내놓았습니다. 그러므로 『단축코드의 아름다움』, 『코드를 간결하게 작성하는 방법』 등 “단축코드”를 옹호하고 찬양하는 다양한 사람들과 책들을 보게 될 것이다.
"코드 백과사전"에서는 프로그래밍을 단순화하기 위해 테이블 기반 방법을 사용한다고 언급합니다
테이블 기반 방법 — 테이블 기반 방법은 논리문(if 및 switch)을 사용하지 않고 테이블에서 정보를 검색하는 프로그래밍 패턴(스킴)입니다. 실제로 논리문을 통해 선택할 수 있는 것은 무엇이든 테이블 조회를 통해 선택할 수 있습니다. 간단한 경우에는 논리문을 사용하는 것이 더 쉽고 간단합니다. 그러나 논리 체인이 점점 더 복잡해짐에 따라 조회 테이블 방법은 점점 더 매력적이 됩니다.
위에서 언급했듯이 테이블은 논리문을 대체하는 데 사용됩니다. JS의 많은 프런트 엔드 엔지니어는 함수형 언어의 일부 기능을 이해했기 때문에 표현식이 포함된 문을 제거하기 위해 최선을 다했습니다. 예를 들어
1. &&는 다음과 같은 경우에 대체됩니다.
if (a == 1) {
$.ajax(xx)
}
// -->
(a == 1) && $.ajax(xx)
2. ?: if/else 교체
if (a == 1) {
$.ajax(xx)
} 그 밖의 {
$(yy).remove()
}
// -->
(a == 1) ? $.ajax(xx) : $(yy).remove()
3. 여러 개의 if/else 및 스위치를 여러 개의 "?:"로 대체할 수도 있습니다.
if (a == 1) {
경고(1)
} else if (a == 2) {
경고(2)
} else if (a == 3) {
경고(3)
} 그 밖의 {
경고(4)
}
// -->
(a == 1)
? 경고(1) : (a == 2)
? 경고(2) : (a == 3)
? 경고(3) : 경고(4)
또한 함수 재귀를 사용하여 for/while 문을 제거할 수도 있습니다. 처음에는 이러한 글쓰기 방법에 중독되었지만 나중에는 더 이상 이해할 수 없다는 것을 알게 되었습니다. (아마도 여전히 덜 읽은 것 같습니다. 뇌는 항상 자연스럽게 문장으로 변환합니다.) 결국에는 문장을 사용하는 데 익숙해졌습니다. .
"코드 백과사전"에 언급된 테이블을 JS 객체로 교체해 보겠습니다
/*
* Date 객체를 기준으로 요일을 반환합니다
* @param {Date} 날짜
* @return {String} "수요일"
*/
함수 getChinaWeekByDate(날짜) {
var numWeekDay = date.getDay();
var weekObj = {
'0': '일요일',
'1': '월요일',
'2': '화요일',
'3': '수요일',
'4': '목요일',
'5': '금요일',
'6': '토요일',
};
weekObj[numWeekDay] 반환 || '';
}
스위치에 비해 코드가 많이 줄었지만 여전히 0~6번 키가 있습니다. getDay 메소드에 의해 반환되는 값은 JS 배열 인덱스와 마찬가지로 0부터 시작합니다. 따라서 배열을 사용하여 단순화할 수 있습니다
/*
* Date 객체를 기준으로 요일을 반환합니다
* @param {Date} 날짜
* @return {String} "수요일"
*/
함수 getChinaWeekByDate(날짜) {
var numWeekDay = date.getDay();
var weekArr = ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일'];
WeekArr[numWeekDay] 반환 || '';
}