文档章节

js Maximum call stack size exceeded

小张525
 小张525
发布于 2017/02/14 23:36
字数 312
阅读 10
收藏 0
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
	<meta charset="utf-8" />
    <script src="../jquery.js"></script>
    <script>
        $(function () {

            // 测试 null的指向

            var func = function () {
                // 说明当call 的第一个参数为null是, 指向是window ,
                //console.log(arguments);
                //console.log(this);
                //console.log(this == window);
                //Array.prototype.join.apply(null, arguments);
                //console.log(arguments);
            }

            //func.call(null, 1, 2, 3);
            var funs = function (args) {
                //console.log(args);
            };

            func.apply(funs, [1, 2, 3]);

            // 解决方案
            document.getElementById = (function(func) {
                return function () {
                    return func.apply(document, arguments);
                }
            })(document.getElementById);
               
            var getId = document.getElementById;
            console.log(getId('demo'));
            
            //document.getElementById.apply(document, 'demo');    //会栈溢出,



            /* 
            该实例输出的结果是   Maximum call stack size exceeded
            document.getElementById = (function () {
                return function(){
                    return document.getElementById.apply(document, arguments);
                }
            })();
                
                //var getIdss = document.getElementById;
                //console.log(getIdss('demo'));
            */


            /* 简化模型  输出结果为 Maximum call stack size exceeded */
            /*
            (function a() {
                a();
            })();

            */

            /*
                问题说明:
                1   栈溢出的错误原因是 : 重复的调用了匿名函数, 
                    79L : 函数在调用后, document.getElementById 函数被改写,
                    76L : 函数调用的不再是 原来的document.getElementById,

                    简化后的函数体

                    document.getElementById= function(){
                        return document.getElementById.apply(document,argument);
                    }
                    在执行 document.getElementById() 后, 函数开始自己调用自己了, 


                    // 简化模式, 如果这么调用也会出现 栈溢出的问题,
                     var a = function () {
                            return a.apply(window, arguments);
                        }
                        a();


                    解决问题的思路 :   参考结局方案.
                    在运行时  func 为一个函数  getElementById(){};
                  
            */

                /*
                document.getElementById = (function () {
                    return  function() {
                        return document.getElementById.apply(window, arguments);
                    }
                })();

                var getId = document.getElementById;
                console.log(getId('demo'));
                */

        });

    </script>
</head>
<body>
    <div id="demo">demo</div>
</body>
</html>

 

© 著作权归作者所有

小张525
粉丝 6
博文 123
码字总数 41070
作品 0
乌鲁木齐
程序员
私信 提问
Uncaught RangeError: Maximum call stack size exceeded 调试日记

异常处理汇总-前端系列 http://www.cnblogs.com/dunitian/p/4523015.html 开发道路上不是解决问题最重要,而是解决问题的过程,这个过程我们称之为~~~调试 记一次填坑记,下次一定注意休息。...

毒逆天
2016/09/12
0
0
JS倒计时 使用setInterval调用对象自身方法报 Maximum call stack size exceeded问题

使用JavaScript写的倒计时,使用setInterval调用对象自身方法报 Maximum call stack size exceeded问题 代码如下: 在浏览器控制台报如下错误: 请JavaScript高手看看是怎么回事,要怎么解决...

铂金小哥
2013/10/26
675
2
这样模仿jquery的其他啊插件写了一个图片轮转的js代码?但是出现了 Uncaught RangeError: Maximum call stack size exceeded错误

js如下: html如下: 效果是有了,但那时出现了 Uncaught RangeError: Maximum call stack size exceeded 这样的错误! 好像速度也控制不住了!? 这是哪里出问题了...

漫步旅行者
2013/03/13
19K
5
Node v10.6.0 发布,提供处于实验阶段的 DNS 模块功能

Node v10.4.0 已发布,该版本值得关注的更新是已提供处于实验阶段的 DNS 模块功能,此外还包括一些改进,如对 worker 的支持。 dns: An experimental promisified version of the dns module...

局长
2018/07/05
856
1
bootstrap同时调用多modal时,提示Maximum call stack size exceeded

Uncaught RangeError: Maximum call stack size exceeded HTML IE 在谷歌、FF浏览器中有Uncaught RangeError: Maximum call stack size exceeded但是不影响运行结果,一样可以定时关闭,但是...

都市网达
2013/08/07
10.9K
7

没有更多内容

加载失败,请刷新页面

加载更多

Spring Security 自定义登录认证(二)

一、前言 本篇文章将讲述Spring Security自定义登录认证校验用户名、密码,自定义密码加密方式,以及在前后端分离的情况下认证失败或成功处理返回json格式数据 温馨小提示:Spring Security...

郑清
15分钟前
1
0
php yield关键字以及协程的实现

php的yield是在php5.5版本就出来了,而在初级php界却很少有人提起,我就说说个人对php yield的理解 Iterator接口 在php中,除了数组,对象可以被foreach遍历之外,还有另外一种特殊对象,也就是继承...

冻结not
28分钟前
1
0
servlet请求和响应的过程

本文转载于:专业的前端网站➥servlet请求和响应的过程 1.加载 Servlet类被加载到Java虚拟机中,并且实例化。在这个过程中,web容器(例如tomcat)会调用Servlet类的公开无参构造函数,产生一...

前端老手
28分钟前
2
0
golang 1.13 errors 包来了,不用写“err 气功波”代码

引 这篇是对 errors 包 的姿势挖掘 气功波错误代码 从 http.Get()返回的错误 判断 syscall.ECONNREFUSED 错误.以前要对 go 标准库 error 结构有点熟悉,才能写出下面的代码 func CmdErr(err ...

guonaihong
32分钟前
23
0
喜玛拉雅已听书单

时间倒序排 书名 作者 状态 唐砖 孑与2 进行中 死灵之书(克苏鲁神话合集) 阿卜杜拉·阿尔哈萨德 进行中 赡养人类 刘慈欣 完结 赡养上帝 刘慈欣 完结 中国太阳 刘慈欣 完结 中国太阳 刘慈欣...

Alex_Java
33分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部