老师请问哪里可以改进

老师请问哪里可以改进

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语句有点冗余,还有更好的方法吗

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,作业完成的很不错,撒花儿~

关于同学问的有没有更好的办法让代码不那么冗余?

答:是可以的,以下的程序同学仅供参考,即使看不懂也没关系,可以参考思路。

1、当看到一堆if 就想到了是不是可以用else if语句把他们都联起来,让一堆有关联的if散落在多处会不会感觉很残忍~,毕竟他们还是有些关联的~

https://img1.sycdn.imooc.com//climg/61737caa09e0848f03340213.jpg

2、当看到这么多if判断时,老师发现这些if判断“长得都差不多”,只有变量在改变,所以老师用了封装的办法,就写了一个if解决了多个if的问题,如下图。

https://img1.sycdn.imooc.com//climg/617282fc0902a17709750762.jpg

ifZero方法这么看上去是不是还有些啰嗦?那么我们是不是可以用三元表达式来写?如下图:

https://img1.sycdn.imooc.com//climg/61728315090eca3a09410204.jpg

3、既然都用到了封装的方法,那是不是可以让这个函数用到更多的地方呢?是不是可以更灵活一些?于是就有了以下这个方法,PrefixZero方法相比较ifZero方法好就好在,PrefixZero可以控制展示多个0,比ifZero更加的灵活。

这里有些超纲,同学看不懂PrefixZero中写的是什么也没关系,因为后续课程中老师会讲到的,现阶段有个大概印象就好。

https://img1.sycdn.imooc.com//climg/6172833409d985da11470798.jpg

以上的思路仅供同学参考,现阶段同学能做出来练习就已经很棒了~

思考一下:swich是不是也可以完成这个作业,且是不是会比if更加省力?

祝学习愉快~

  • Snakk 提问者 #1
    老师你好,我发现第一点中的if...else if语句,如果hours小于10满足条件的话,后面的else if是不执行的,也就是说如果minutes也小于10的话,不执行补零,显示会有错误
    下载视频          
    2021-10-23 07:11:25
  • 好帮手慕小李 回复 提问者 Snakk #2

    同学观察的到位赞一个~,此处的确是有逻辑上的问题,在实际开发中如果有用到多个if排列的情况,可以考虑优化成 if else if 类似的结构,当然也要看逻辑是否支持,不要犯老师这样的低级错误就行。

    2021-10-23 10:59:59
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师