来看一道考题:
代码语言:javascript复制var day=new Date(2017,5,31);
console.log(day.getMonth());
结果为()
A. 2017
B. 31
C. 6
D. 5
结果:选择C
为什么?
为什么?
为什么?
解析:
new Date()语法:
代码语言:javascript复制new Date(year, monthIndex [, day [, hours
[, minutes [, seconds [, milliseconds]]]]]);
getMonth()方法:
返回一个0 到 11的整数值:0 代表一月份,1 代表二月份, 2 代表三月份,依次类推。
根据上面的知识,我们知识了new Date() 第二个参数monthIndex,指的就是月份对应的索引, 一般比正常的月份值少1.
而getMonth()方法,刚好也是获取对应的索引值,那结果为什么为返回6呢?
运行结果 :
为什么呢?我们来做下测试,把day对应的值改一下,
改个3看看,输出结果为5;
改成36,输出为6;
改成66,输出结果为7
如下图:
总结:
原来,当day值,超过了当前月的最大值,最后进行天数相加,而不是直接赋值;
题中,monthIndex为5,实际为6月,月份只有30天,而当day为31时,多的一天,就会加一天,即变成了7月。getMonth()输出即为6
哈哈,懂了嘛,又了解了一个小知识。