JavaScript-如何计算一个月有多少天

一般写日历的时候都会计算平年、闰年、世纪年这些的月份天数,这时候我们会先写好包含每个月数组天数的数组,除了 2 月份特殊,需要通过平闰年来判定是 28 还是 29 天。

一般写法如下:

const monthsOfDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
const leapOfYear = function () { ... } // 此处不明写,网上也有很多示例

偶然也发现另外一种实现,我个人认为事先声明确定初始化会好些,而不是动态计算当月天数?

function getDaysInMonth(year, month) {
    if (isNaN(year) || isNaN(month)) {
        throw new Error('错误的年份或者月份')
        return
    }

    if (month < 1 || month > 12) {
        throw new RangeError(`错误的月份区间:${month}`)
        return
    }

    return new Date(year, month, 0).getDate();
}

通过这个方法就可以很方便的获取到月份。

问题:为什么 new Date() 的 date 设置为 0 之后可以获取到当月的天数?