一段有关于用正则匹配日期的代码?

<body>
<div id="date"></div>
</body>
</html>
<script>
    function dateFormat(date,format) {
        var o = {
            "M+" : date.getMonth()+1,                  //month
            "d+" : date.getDate(),                     //day
            "h+" : date.getHours(),                    //hour
            "m+" : date.getMinutes(),                  //minute
            "s+" : date.getSeconds(),                  //second
            "q+" : Math.floor((date.getMonth()+3)/3),  //quarter
            "S" : date.getMilliseconds()               //millisecond
        }
        if(/(y+)/.test(format)) format=format.replace(RegExp.$1,
            (date.getFullYear()+"").substr(4- RegExp.$1.length));

        for(var k in o)if(new RegExp("("+ k +")").test(format))
            format = format.replace(RegExp.$1,
                RegExp.$1.length==1? o[k] :
                    ("00"+ o[k]).substr((""+ o[k]).length));
        return format;
    }

    //
    function Time() {
        this.produceDate = '';
        Object.defineProperty(this, "produceDate", {
            get: function () {
                return dateFormat(produceDate,'yyyy-MM-dd');
            },
            set: function (value) {
                produceDate = value;
            }
        });
    }

    /*获取元素*/
    var date = document.getElementById('date')
    // 实例化
    var today = new Time();

    today.produceDate=new Date();

    date.innerHTML=today.produceDate;

</script>

里面的方法我都明白,但是下面这一块的思路不是很清晰?

这一段的if语句和for循环都没有加花括弧,不知道加和不加到底有什么区别,这样写的意义在哪里?

望大神解答一下,非常感谢!

if(/(y+)/.test(format)) format=format.replace(RegExp.$1,
(date.getFullYear()+"").substr(4- RegExp.$1.length));

for(var k in o)if(new RegExp("("+ k +")").test(format))
format = format.replace(RegExp.$1,
RegExp.$1.length==1? o[k] :
("00"+ o[k]).substr((""+ o[k]).length));
return format;

kumayato
浏览 1205回答 1
1回答

ruibin

如果if语句和for语句后面只有一行代码,那花括号可以省略。这样可以节约代码量
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript