js递归错误
错误信息:Uncaught RangeError: Maximum call stack size exceeded
问题代码:
js代码:
$(function(){
selectToggle();
});
//自动加载菜单栏
function selectToggle(){
$(".m-menu__toggle").click();
}
html代码:
<a href="#" class="m-menu__link m-menu__toggle" onclick="selectToggle()">
<i class="m-menu__link-icon flaticon-share"></i>
<span class="m-menu__link-text">
{{module.moduleName}}
</span>
<i class="m-menu__ver-arrow la la-angle-right"></i>
</a>
错误原因:
错误根据中文翻译,意思为:最大堆栈超过了最大值。
反复循环调用导致最大堆栈超过最大值
每个浏览器都不一样,例如常用的Chrome和FireFox
- Firefox: 50994
- Chrome: 10402
解决办法:仔细审查代码,出现这种情况是因为函数不合理的循环调用导致的。
另外科普下什么是递归(引用百度百科):
程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述