JS [Web浏览器] “Uncaught RangeError: Maximum call stack size exceeded“ (32)
文章地址: http://www.zizhujy.com/blog/post/2012/03/18/Uncaught-RangeError-Maximum-call-stack-size-exceeded.aspx
在此,非常感谢该文章作者的分享,本文完全转载自上面链接,此处作为备份,个人查看使用。
一、问题:
今天在做网页时突然碰到这样的JavaScript错误:
Uncaught RangeError: Maximum call stack size exceeded
百思不得其解,千次调试找不到原因。
表面上看,是因为递归次数太多导致内存被耗费太多,但是我的程序中,并没有一处使用递归算法啊。
二、原因:
最终冷静地思考了良久,终于发现,问题的根源在于网页中引用了两个不同的JavaScript库,而这两个库都对JavaScript原始对象的某些方法做了修改,从而导致出现了循环引用。具体说来,就是这么回事儿:
网页H引用了js库A和B,而A与B中对Math.pow方法都作了修改,如下图所示:
如果对Math.pow()方法的修改只进行一次,那么是不会有问题的:先用Math.power存储了Math.pow的原始版本,然后再用新的代码替换Math.pow。
然而,在第二个库中,又执行到 Math.power = Math.pow时,那么Math.power就不再是保存Math.pow的原始版本了,
因为Math.pow已经被第一个库改成了新代码,所以在Math.pow的新代码中调用Math.power()时,本意是调用原始版本,而实际上,
却是调用自己了。于是造成了循环!
三、解决方案:
在进行替换前加一行判断代码,避免重复使用相同的方法名。
四、备注:
看到这里,也许会有人感到奇怪,为什么要对原始的Math.pow()方法进行替换呢?这里的替换代码似乎除了降低它的效率外,
什么也没做。实际上,这里只是说明问题原因的一个示例,所以用了蠢代码,但是简单。为什么要对Math.pow()进行替换,
因为原始的Math.pow()有一个Bug,就是对负数求比如 1/3 次方,就会返回不正确的结果NaN。
JS [Web浏览器] “Uncaught RangeError: Maximum call stack size exceeded“ (32)相关推荐
- JS 异常: Uncaught RangeError: Maximum call stack size exceeded
遇到了这个js异常, 总是吧浏览器搞崩溃,这是什么原因呢? 开始我也只能想到死循环, 也许是哪个条件判断写错了,其实不是.经过google,发现了一篇文章,内容请看: ================ ...
- JS报错:Uncaught RangeError: Maximum call stack size exceeded
之前,遇到Uncaught RangeError: Maximum call stack size exceeded,查了一下,这个就是"最大堆栈超过了最大值",一般这种错误也是在 ...
- Uncaught RangeError Maximum call stack size exceeded
前端报错:Uncaught RangeError:Maximum call stack size exceeded at RegExp.exec() 报错原因为栈溢出,大多因为递归导致,无限循环调用自 ...
- Uncaught RangeError: Maximum call stack size exceeded解决思路
今天突然碰到这样的JavaScript错误:Uncaught RangeError: Maximum call stack size exceeded 这个翻译过来就是堆栈溢出了. 1.原因:有小类到 ...
- dialog出现Uncaught RangeError: Maximum call stack size exceeded错误
先贴错误代码: Uncaught RangeError: Maximum call stack size exceededat String.replace (<anonymous>)at ...
- Uncaught RangeError: Maximum call stack size exceeded.
当采用递归方式生成导航栏的子菜单时,菜单可以正常生成,但是当鼠标hover时,会出现循环调用某个(mouseenter)事件,导致最后报错.菜单溢出了. 查看报错详情: 处理方式 1.给el-subm ...
- Vue报错:Uncaught RangeError: Maximum call stack size exceeded
vue项目放在服务器上,报错如下: 堆栈溢出: 1.原因:有小类到大类的递归查询导致溢出 2.解决方法思想: A.在做递归查询时候由大类到小类去查询 B.匹配结果后及时return 退出,防止过多查询 ...
- Uncaught RangeError: Maximum call stack size exceeded 报错原因及解决方案
使用谷歌localhost运行时候页面崩溃,显示链接超时,找了错误好久也上网上查了好久都没有找到错误的来源,再次检查的时候发现自己真的是很搞笑.错误如图 改错之前: 改错之后: 错误不是无缘无故就发生 ...
- Vue -- 项目报错整理(1):RangeError: Maximum call stack size exceeded
这几天项目运行报了个错: Uncaught RangeError: Maximum call stack size exceeded,刚开始看到 "returnNodeParameter&q ...
最新文章
- 青龙羊毛——放羊娃(教程)
- mysql实现日志系统_基于Hadoop/CloudBase/MySQL的日志分析系统的设计与实现
- 如何使用SAP Cloud for Customer OData服务创建Lead
- android 广播 飞行模式,Android 开启飞行模式的几种方式
- 动态规划实战3-leetcode 55.Jump Game
- 2021Java面试总结!平安银行java开发面试
- java activiti 工作流引擎_Activiti工作流引擎简介详解
- 各种路由器接口与连接方法
- Java接入支付宝提现
- Linux下常见的权限维持方式
- 在VMWare虚拟机上安装Kali linux系统的完整过程(图文)
- 1083 Windy数(数位dp)
- CAtia_打开提示:许可证过期怎么办
- 常用PLC学习资料下载地址
- BZOJ-1076: [SCOI2008]奖励关 (概率期望DP 未完待续)
- 5分钟弄懂程序员的如何升级到架构师。
- 【08月01日】A股滚动市净率PB历史新低排名
- 自定义协议推送的设计
- mysql传入Bean_ods数据导入mysql
- 视觉生理学基础(人眼结构)
热门文章
- java实现最近距离
- 使用深度学习Web项目的手写Marathi印地语字母书写和检测
- 2-3 CAD基础 删除(erase)
- Win10企业版激活(亲测有效)
- Oracle等待事件(一)—— latch cache buffers chains 分析与优化思路
- I.Gree的心房(思维题)
- 弥散峰度成像DKI简介
- 2021信创“大比武”正式启动!金山办公助力信创人才培养和生态成熟
- 本周比赛一些感想(5.25~5.31)
- Legacy octal literals are not allowed in strict mode 严格模式下禁止使用 八进制