javascript中Date對象的getDay方法使用指南
Date對象有個getDay方法,它根據(jù)本地時間,返回一個具體日期中一周的第幾天。返回值從0~6,分別對應(yīng)周日~周六
getDay 0 1 2 3 4 5 6
星期幾 周日 周一 周二 周三 周四 周五 周六
用到日期相關(guān)的需求時需要將getDay返回的值轉(zhuǎn)成星期幾,即“這一天”是星期幾?比如日歷組件中選擇日歷后返回 “2014-12-22 周一”。
這是一段依然在線上運(yùn)行的代碼
/*
* 根據(jù)Date對象返回星期幾
* @param {Date} date
* @return {String} "星期三"
*/
function getChineseWeekByDate(date) {
var numWeekDay = date.getDay();
if (numWeekDay == 0) {
return '周日';
} else if (numWeekDay == 1) {
return '周一';
} else if (numWeekDay == 2) {
return '周二';
} else if (numWeekDay == 3) {
return '周三';
} else if (numWeekDay == 4) {
return '周四';
} else if (numWeekDay == 5) {
return '周五';
} else if (numWeekDay == 6) {
return '周六';
} else {
return '';
}
}
這段代碼通過多個if else分支判斷,返回星期幾,有同學(xué)提到可以利用switch優(yōu)化下
/*
* 根據(jù)Date對象返回星期幾
* @param {Date} date
* @return {String} "星期三"
*/
function getChineseWeekByDate(date) {
var numWeekDay = date.getDay();
switch (numWeekDay) {
case 0: return '周日';
case 1: return '周一';
case 2: return '周二';
case 3: return '周三';
case 4: return '周四';
case 5: return '周五';
case 6: return '周六';
default: return '';
}
}
相比if/else,代碼簡且短清晰了不少。有人做過統(tǒng)計(jì)代碼越簡短,大腦思考的時間越短。因此你會看到各種《短碼之美》,《代碼簡潔之道》等各種倡導(dǎo)和贊美“短碼”的人和書。
《代碼大全》提到利用表驅(qū)動法來簡化編程
表驅(qū)動法 — 表驅(qū)動法是一種編程模式(scheme),從表里查找信息而不使用邏輯語句(if和switch)。事實(shí)上,凡是能通過邏輯語句來選擇的,都可以通過查表來選擇。對簡單的情況而言,使用邏輯語句更為容易和直白。但隨著邏輯鏈越來越復(fù)雜,查表法也就越發(fā)顯得有吸引力。
上面提到利用表替代邏輯語句,JS里有不少前端工程師自從了解了函數(shù)式語言的一些特性,就拼命的用表達(dá)式消滅語句。比如
1. && 替代 單if
if (a == 1) {
$.ajax(xx)
}
// -->
(a == 1) && $.ajax(xx)
2. ?: 替代 if/else
if (a == 1) {
$.ajax(xx)
} else {
$(yy).remove()
}
// -->
(a == 1) ? $.ajax(xx) : $(yy).remove()
3. 多個if/else和switch 也可以用多個“?:”替換
if (a == 1) {
alert(1)
} else if (a == 2) {
alert(2)
} else if (a == 3) {
alert(3)
} else {
alert(4)
}
// -->
(a == 1)
? alert(1) : (a == 2)
? alert(2) : (a == 3)
? alert(3) : alert(4)
另外,還可以用函數(shù)遞歸去消滅for/while語句。開始對這些寫法比較上癮,后來發(fā)現(xiàn)自己看不懂了(可能還是看的少,大腦總是自然的又將這些轉(zhuǎn)換成語句),最后還是習(xí)慣用語句。
《代碼大全》里說的表,我們用一個JS對象來替換試下
/*
* 根據(jù)Date對象返回星期幾
* @param {Date} date
* @return {String} "星期三"
*/
function getChineseWeekByDate(date) {
var numWeekDay = date.getDay();
var weekObj = {
'0': '周日',
'1': '周一',
'2': '周二',
'3': '周三',
'4': '周四',
'5': '周五',
'6': '周六',
};
return weekObj[numWeekDay] || '';
}
相比switch,又減了不少代碼,但還有0~6字樣的key存在。getDay方法返回的從0開始恰好和JS數(shù)組索引一樣也是從0開始。因此用數(shù)組可以再簡化下
/*
* 根據(jù)Date對象返回星期幾
* @param {Date} date
* @return {String} "星期三"
*/
function getChineseWeekByDate(date) {
var numWeekDay = date.getDay();
var weekArr = ['周日', '周一','周二','周三','周四','周五','周六'];
return weekArr[numWeekDay] || '';
}
- js用Date對象的setDate()函數(shù)對日期進(jìn)行加減操作
- JavaScript Date對象使用總結(jié)
- JavaScript 中Date對象的格式化代碼方法匯總
- JavaScript Date對象 日期獲取函數(shù)
- JS date對象的減法處理實(shí)現(xiàn)代碼
- JS使用Date對象實(shí)時顯示當(dāng)前系統(tǒng)時間簡單示例
- Javascript之Date對象詳解
- 原生JS:Date對象全面解析
- 詳解JavaScript的Date對象(制作簡易鐘表)
- js用Date對象處理時間實(shí)現(xiàn)思路及代碼
- JavaScript Date對象功能與用法學(xué)習(xí)記錄
相關(guān)文章
原生Js實(shí)現(xiàn)元素漸隱/漸現(xiàn)(原理為修改元素的css透明度)
大家經(jīng)??吹骄W(wǎng)頁里圖片漸變顯示,自己寫一個。原理很簡單就是修改元素的css透明度,具體實(shí)現(xiàn)代碼如下,感興趣的各位可以參考下哈,希望對大家有所幫助2013-06-06Javascript DOM的簡介,節(jié)點(diǎn)和獲取元素詳解
下面小編就為大家分享一篇詳談DOM的簡介,節(jié)點(diǎn)和獲取元素,具有非常好的參考價值,一起跟隨小編過來看看吧,希望對大家有所幫助2021-11-11JavaScript定義數(shù)組的三種方法(new Array(),new Array(''x'',''y'')
下面小編就為大家?guī)硪黄狫avaScript定義數(shù)組的三種方法(new Array(),new Array('x','y')。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10微信小程序五子棋游戲的悔棋實(shí)現(xiàn)方法【附demo源碼下載】
這篇文章主要介紹了微信小程序五子棋游戲的悔棋實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了微信小程序中悔棋的原理與相關(guān)實(shí)現(xiàn)技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2019-02-02