最近發現三元表達式超級好用,之前咱們用的最多可能就是:es6
const apple = isApple ? buyApple : ''
這種代碼,可是其實咱們能夠用更加簡便的方式實現
const apple = isApple && buyApple 若是isApple爲true則執行buyApple。app
而咱們經常使用的
const options = options || default 則是options爲true則後面的default再也不執行。
好了懂得上面的原理,咱們來實現一個例子:評論不少時候有個日期,可是不少都不是顯示實際日期,而是顯示1天前,1分鐘前,1小時前之類的,咱們運用上面的三元表達式來實現:code
const getTimeString = timeNum => { const timeString = timeNum instanceof Date ? timeNum : new Date(timeNum) const second = 1000 const minute = 1000 * 60 const hour = minute * 60 const day = hour * 24 const time_now = new Date().getTime() const time_difference = time_now - timeString const that_time = timeString.getFullYear() + '-' + parseInt(timeString.getMonth()+1) + '-' + timeString.getDate()+ ' ' + timeString.getHours() + ':' + (timeString.getMinutes()<10 ? '0'+timeString.getMinutes() : timeString.getMinutes()) return Math.floor((time_difference/day) && that_time) || (Math.floor(time_difference/hour) && Math.floor(time_difference/hour)+'小時前') || (Math.floor(time_difference/minute) && Math.floor(time_difference/minute)+'分前') || (Math.floor(time_difference/second) && Math.floor(time_difference/second)+'秒前') }
調用方法也很簡單:對象
getTimeString(new Date('2017-9-12 15:23:10'))
上面運用了es6的語法,不熟悉的,能夠看看es6的教程
由於事先不知道傳過來是不是日期對象,因此咱們須要判斷一下教程
const timeString = timeNum instanceof Date || new Date(timeNum)
若是評論過了1天,按照天,周,月來看時間,我以爲比較累,因此大於24小時的,都用回原來的時間,我以爲這樣能夠增長用戶體驗。
若是你有更加簡便的代碼,歡迎留言。get