调用Date对象getMinutes/getSeconds触发TypeError报错,求技术解决
解决Uncaught TypeError: d.getMinutes is not a function的问题
嘿,这个报错我见得挺多的,大概率是你创建Date对象的方式出了问题,或者变量d被意外覆盖成了非Date类型的值。咱们一步步来排查修复:
最常见的原因:漏掉了new关键字
如果你不小心写成了这样:
var d = Date(); // 没有new! var e = d.getMinutes(); var f = d.getSeconds();
直接调用Date()返回的是字符串类型的当前时间,而不是Date实例,字符串当然没有getMinutes()和getSeconds()方法,自然就会报错。
正确的写法
确保用new关键字创建Date实例:
// 正确创建Date对象 var d = new Date(); // 现在调用方法就没问题了 var e = d.getMinutes(); var f = d.getSeconds(); // 可以打印验证结果 console.log(`当前分钟:${e},当前秒数:${f}`);
其他可能的排查点
如果已经用了new还是报错,那得检查:
- 有没有其他代码在这个位置之前,把变量
d重新赋值成了其他类型(比如字符串、数字、普通对象)?比如var d = "2024-01-01";这种,会覆盖掉之前的Date实例。 - 可以在创建
d之后加一行代码验证类型:
如果输出不是var d = new Date(); console.log(typeof d, d instanceof Date); // 正常应该输出:object trueobject true,说明d不是有效的Date对象,得找变量被污染的地方。
内容的提问来源于stack exchange,提问作者qadenza
相关产品推荐
相关产品推荐

