前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >破解当前端出现“RangeError: Maximum call stack size exceeded”的N种思路

破解当前端出现“RangeError: Maximum call stack size exceeded”的N种思路

作者头像
lyb-geek
发布2022-03-10 13:39:05
18.4K0
发布2022-03-10 13:39:05
举报
文章被收录于专栏:Linyb极客之路

前言

最近用谷歌浏览器调试时,控制台报了一个“Uncaught RangeError: Maximum call stack size exceeded”,其中文意思是超出最大调用堆栈大小,报错如下图所示:

后边经过一番排查,终于把问题解决

问题出现的本质原因

1、前端存在无限循环调用

2、递归运算或者递归调用

3、函数不小心调用了它自己本身

...

排查的思路方向

因为出现这种问题的原因多种多样,没办法一招走天下,因此提供一些排查思路方向

1、排查js是否存在递归调用或者运算函数

2、引入冲突的js库

3、如果项目中有引入vue(或者iview),注意检查调用的方法是不是同名了导致不停死循环

4、vue自定义组件是否存在父调用子,子调用父的行为

5、点击a标签后触发内部的组件的点击事件,导致点击事件冒泡至a标签(即a再次被点击),导致无限循环[笔者的项目就是因为这个原因引起问题]

如果是因为a标签原因解决的办法有如下

1、把内嵌在a标签的组件挪到a标签外,但这样可能导致样式变样,或者点击不会出现手型,点击不会出现变色 2、阻止冒泡事件

3、如果a标签的写法是<a href="#"/>,则改成<a href="javascript:;;"/>

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-01-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Linyb极客之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 问题出现的本质原因
  • 排查的思路方向
    • 如果是因为a标签原因解决的办法有如下
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档