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
相关产品推荐
相关产品推荐

