老师请问哪里可以改进
var date = new Date(); function changeDate(date){ var dayArr = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六']; var fullYear = date.getFullYear(); var month = date.getMonth() + 1; var dateNow = date.getDate(); var day = dayArr[date.getDay()]; var hours = date.getHours(); var minutes=date.getMinutes(); var seconds=date.getSeconds(); if(hours<10){ hours = '0' + hours; } if(minutes<10){ minutes = '0' + minutes; } if(seconds <10){ seconds = '0' + seconds; } var output = '今天是' + fullYear +'年' +month + '月' + dateNow + '日' + day +'</br>' + hours + ':' +minutes +':' +seconds; return output; } document.write(changeDate(date));
问题描述:
hours\seconds\minutes小于10要补0,用三个if语句有点冗余,还有更好的方法吗
27
收起
正在回答
1回答
同学你好,作业完成的很不错,撒花儿~
关于同学问的有没有更好的办法让代码不那么冗余?
答:是可以的,以下的程序同学仅供参考,即使看不懂也没关系,可以参考思路。
1、当看到一堆if 就想到了是不是可以用else if语句把他们都联起来,让一堆有关联的if散落在多处会不会感觉很残忍~,毕竟他们还是有些关联的~
2、当看到这么多if判断时,老师发现这些if判断“长得都差不多”,只有变量在改变,所以老师用了封装的办法,就写了一个if解决了多个if的问题,如下图。
ifZero方法这么看上去是不是还有些啰嗦?那么我们是不是可以用三元表达式来写?如下图:
3、既然都用到了封装的方法,那是不是可以让这个函数用到更多的地方呢?是不是可以更灵活一些?于是就有了以下这个方法,PrefixZero方法相比较ifZero方法好就好在,PrefixZero可以控制展示多个0,比ifZero更加的灵活。
这里有些超纲,同学看不懂PrefixZero中写的是什么也没关系,因为后续课程中老师会讲到的,现阶段有个大概印象就好。
以上的思路仅供同学参考,现阶段同学能做出来练习就已经很棒了~
思考一下:swich是不是也可以完成这个作业,且是不是会比if更加省力?
祝学习愉快~
相似问题
登录后可查看更多问答,登录/注册
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星