You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

getDate函数偶现异常:控制台重复输出问题求助

解决getDate函数异常与控制台输出问题

嘿,我看了你的代码和问题,找到问题根源啦!

你遇到的异常是因为函数命名冲突——你自定义的getDate()和JavaScript原生的Date.getDate()方法重名了。在全局作用域下,这个自定义函数会覆盖原生方法,导致调用时出现意想不到的异常。至于控制台重复输出,其实是setInterval的预期行为(它本来就是每隔1秒重复执行一次回调),但异常导致的错误重复输出会随着命名冲突的解决而消失。

给你两个关键修改点:

  • 修改函数名称:把getDate改成不会和原生API冲突的名字,比如getFormattedDateTime
  • 简化补0逻辑:用ES6的padStart(2, '0')替代繁琐的if判断,代码更简洁

修改后的完整代码如下:

function getFormattedDateTime() { 
  const newDate = new Date(); 
  const year = newDate.getFullYear(); 
  // 月份从0开始,加1后转字符串补0
  const month = (newDate.getMonth() + 1).toString().padStart(2, '0'); 
  const day = newDate.getDate().toString().padStart(2, '0'); 
  const hours = newDate.getHours().toString().padStart(2, '0'); 
  const minutes = newDate.getMinutes().toString().padStart(2, '0'); 
  const seconds = newDate.getSeconds().toString().padStart(2, '0'); 
  // 用模板字符串拼接更清晰
  return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; 
} 
// 每秒调用一次函数并打印
setInterval(() => console.log(getFormattedDateTime()), 1000)

这样修改后,命名冲突的问题就解决了,异常也会消失。如果之后你不想控制台每秒输出,只需要把setInterval换成setTimeout(它只会执行一次)就行。

内容的提问来源于stack exchange,提问作者kjoszi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:34:08