我在网页上有一个烦人的bug:
date.GetMonth()不是函数
所以,我想我做错了什么。变量date不是date类型的对象。如何在Javascript中检查数据类型?我试图添加一个if(日期),但不起作用。
function getFormatedDate(date) {
if (date) {
var month = date.GetMonth();
}
}
所以,如果我想编写防御性代码并防止日期(不是一个)被格式化,我该怎么做?
谢谢
UPDATE:我不想检查日期的格式,但我想确保传递给getFormatedDate()方法的参数是date类型。
如果您不关心iframes/其他上下文,这是一种非常简单的方法。
// isNaN(Invalid Date) == true
if (date instanceof Date && !isNaN(date)) { // isNaN wont accept a date in typescript, use date.getTime() instead to produce a number
console.log("is date!");
}
检查对象是否实际上是日期,而不是看起来像日期的对象。任何对象都可以有getMonth函数。确保日期不是无效日期不将值传递到新的Date()中,其中数字甚至字符串都可以转换为Date。
如果您需要支持iframes和不同的上下文,您可以使用接受的答案,但添加额外的检查以识别无效日期。
// isNaN(Invalid Date) == true
if (Object.prototype.toString.call(date) === '[object Date]' && !isNaN(date)) {
console.log("is date!");
}