TypeError: date.getHours 不是 JavaScript 中的函数
TypeError: date.getHours is not a function in JavaScript
getHours()
当对不是日期对象的值调用该方法时,会发生“TypeError: date.getHours is not a function”错误
。
要解决该错误,请在调用该方法之前将该值转换为日期,或者确保仅对getHours()
有效的日期对象调用该方法。
下面是错误如何发生的示例。
const date = Date.now(); console.log(date); // 👉️ 1639... // ⛔️ TypeError: date.getHours is not a function const result = date.getHours();
我们调用了Date.now()
返回一个整数的函数,并尝试
对其调用Date.getHours()方法,这导致了错误。
getHours()
仅在有效Date
对象上调用该方法
要解决该错误,请确保仅对getHours()
有效日期对象调用该方法。
const t1 = new Date().getHours(); console.log(t1); // 👉️ 18 const t2 = new Date('Sept 24, 22 13:20:18').getHours(); console.log(t2); // 👉️ 13
您可以通过将有效日期传递给Date()构造函数来获取日期对象
。
调用getHours()
无效Date
返回NaN
请注意,如果将无效日期传递给Date()
构造函数,您将返回NaN
(不是数字)值。
const d1 = new Date('invalid').getHours(); console.log(d1); // 👉️ NaN
您可以查看console.log
调用该方法的值getHours
,看看它是否是有效Date
对象。
Date
调用前检查值是否为agetHours
Date
您可以通过以下方式有条件地检查该值是否为对象。
const d1 = new Date(); if (typeof d1 === 'object' && d1 !== null && 'getHours' in d1) { const result = d1.getHours(); console.log(result); // 👉️ 18 }
Our if
condition uses the logical AND (&&) operator, so for the if
block to
run, all of the conditions have to be met.
d1
variable stores a value with a type of object because dates have a type of object
.Then we
check if the variable is not equal to null.
Unfortunately, if you check the type of null – console.log(typeof null)
, you
will get an "object"
value back, so we have to make sure the value is not
null
.
console.log(typeof null); // 👉️ object
getHours
property.Then we know we can safely call the getHours
method on the object.