迹忆客 专注技术分享

当前位置:主页 > 学无止境 > WEB前端 > JavaScript >

JavaScript 中 TypeError: date.getDay is not a function 错误

作者:迹忆客 最近更新:2023/01/20 浏览次数:

当对不是日期对象的值调用 getDay() 方法时,会发生“TypeError: date.getDay is not a function”错误。

要解决此错误,需要在调用方法之前将值转换为日期,或确保仅对有效日期对象调用 getDay() 方法。

下面是产生上述错误的一个示例

const date = Date.now();
console.log(date); // 👉️ 1639...

// ⛔️ TypeError: date.getDay is not a function
const result = date.getDay();

JavaScript 中 TypeError- date.getDay is not a function 错误

我们调用了 Date.now() 函数,它返回一个整数,并试图在其上调用 Date.getDay() 方法,所以错误发生了。

只在有效的日期对象上调用 getDay() 方法

要解决该错误,请确保仅对有效日期对象调用 getDay() 方法。

const d1 = new Date().getDay();
console.log(d1); // 👉️ 4

const d2 = new Date('Sept 24, 22 13:20:18').getDay();
console.log(d2); // 👉️ 6

我们可以通过将有效日期传递给 Date() 构造函数来获取日期对象。


在无效日期调用方法返回 NaN

请注意 ,如果将无效日期传递给 Date() 构造函数,将返回 NaN(不是数字)值。

const d1 = new Date('invalid').getDay();
console.log(d1); // 👉️ NaN

我们可以使用 console.log 打印正在调用 getDay 方法的值并查看它是否是有效的 Date 对象。


在调用 getDay 之前检查该值是否为 Date 对象

我们可以通过以下方式有条件地检查该值是否为 Date 对象。

const d1 = new Date();

if (typeof d1 === 'object' && d1 !== null && 'getDay' in d1) {
  const result = d1.getDay();
  console.log(result); // 👉️ 4
}

我们的 if 条件使用逻辑与 && 运算符,因此要运行 if 块,必须满足所有条件。

我们首先检查 d1 变量是否存储了具有对象类型的值,因为日期具有对象类型。

然后我们检查变量是否不等于 null。 不幸的是,如果我们检查 null 的类型 - console.log(typeof null),我们将得到一个“object”值,因此我们必须确保该值不为 null。

console.log(typeof null); // 👉️ object

我们检查的最后一件事是该对象包含 getDay 属性。

然后我们知道我们可以安全地对该对象调用 getDay() 方法。


总结

当对不是日期对象的值调用 getDay() 方法时,会发生“TypeError: date.getDay is not a function”错误。

要解决此错误,请在调用方法之前将值转换为日期,或确保仅对有效日期对象调用 getDay() 方法。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便