最近发现三元表达式超级好用,以前我们用的最多可能就是:
const apple = isApple ? buyApple : ''
这种代码,但是其实我们可以用更加简便的方式实现
const apple = isApple && buyApple 如果isApple为true则执行buyApple。
而我们常用的
const options = options || default 则是options为true则后面的default不再执行。
好了懂得上面的原理,我们来实现一个例子:评论很多时候有个日期,但是很多都不是显示实际日期,而是显示1天前,1分钟前,1小时前之类的,我们运用上面的三元表达式来实现:
constgetTimeString=timeNum=>{consttimeString=timeNuminstanceofDate?timeNum:newDate(timeNum)constsecond=1000constminute=1000*60consthour=minute*60constday=hour*24consttime_now=newDate().getTime()consttime_difference=time_now-timeStringconstthat_time=timeString.getFullYear()+'-'+parseInt(timeString.getMonth()+1)+'-'+timeString.getDate()+' '+timeString.getHours()+':'+(timeString.getMinutes()<10?'0'+timeString.getMinutes():timeString.getMinutes())returnMath.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(newDate('2017-9-12 15:23:10'))
或
getTimeString('2017-9-12 15:23:10')
上面运用了es6的语法,不熟悉的,可以看看es6的教程
因为事先不知道传过来是否是日期对象,所以我们需要判断一下
consttimeString=timeNuminstanceofDate||newDate(timeNum)
如果评论过了1天,按照天,周,月来看时间,我觉得比较累,所以大于24小时的,都用回原来的时间,我觉得这样可以增加用户体验。
如果你有更加简便的代码,欢迎留言。