如何解决JavaScript最大调用栈大小超出错误?

2026-03-31 15:460阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计659个文字,预计阅读时间需要3分钟。

如何解决JavaScript最大调用栈大小超出错误?

在最近的项目开发中,有一个部分是判断数组内是否存在指定日期。如果不存在,则将日期减一天或加一天,重复此过程,直到找到日期为止。这个过程称为日期操作。

最近在写项目的时候,有个部分是判断数组内是否存在这个日期,如果不存在的话则日期减一天或加一天再遍历一次数组内是否存在这个日期,重复此操作直到找到日期为止。

日期操作代码如下

//日期加一天或减一天 function moreDate(date1,i) { let date =new Date(date1) let year = date.getFullYear(); //补全位数 let month = (date.getMonth()+1).toString().padStart(2,'0') let day = (date.getDate()+i).toString().padStart(2,'0') return year+"-"+month+"-"+day }

但是会存在一个问题就是,由于这个操作是递归操作,每次找不到日期时不是跳出方法,而是再执行一次这个方法,当重复多次这个递归操作时就会导致达到调用堆栈限制,就会有Maximum call stack size exceeded错误,这个错误的意思是 "超出最大调用堆栈大小"。

阅读全文

本文共计659个文字,预计阅读时间需要3分钟。

如何解决JavaScript最大调用栈大小超出错误?

在最近的项目开发中,有一个部分是判断数组内是否存在指定日期。如果不存在,则将日期减一天或加一天,重复此过程,直到找到日期为止。这个过程称为日期操作。

最近在写项目的时候,有个部分是判断数组内是否存在这个日期,如果不存在的话则日期减一天或加一天再遍历一次数组内是否存在这个日期,重复此操作直到找到日期为止。

日期操作代码如下

//日期加一天或减一天 function moreDate(date1,i) { let date =new Date(date1) let year = date.getFullYear(); //补全位数 let month = (date.getMonth()+1).toString().padStart(2,'0') let day = (date.getDate()+i).toString().padStart(2,'0') return year+"-"+month+"-"+day }

但是会存在一个问题就是,由于这个操作是递归操作,每次找不到日期时不是跳出方法,而是再执行一次这个方法,当重复多次这个递归操作时就会导致达到调用堆栈限制,就会有Maximum call stack size exceeded错误,这个错误的意思是 "超出最大调用堆栈大小"。

阅读全文