Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Internet Explorer 11中加载巨大数组会导致堆栈溢出_Javascript_Arrays_Internet Explorer_Stack Overflow - Fatal编程技术网

Javascript 在Internet Explorer 11中加载巨大数组会导致堆栈溢出

Javascript 在Internet Explorer 11中加载巨大数组会导致堆栈溢出,javascript,arrays,internet-explorer,stack-overflow,Javascript,Arrays,Internet Explorer,Stack Overflow,我有一个(生成的)页面,其中有一个非常大的锯齿状数组。它不在IE11中初始化;我得到SCRIPT28:堆栈空间不足和SCRIPT2343:第1行的堆栈溢出。我已使用随机数据将有问题的页面缩减到最低限度,如下所示: <html><body> <div id="info"> Loading... </div> <script> var d = []; var i =

我有一个(生成的)页面,其中有一个非常大的锯齿状数组。它不在IE11中初始化;我得到
SCRIPT28:堆栈空间不足
SCRIPT2343:第1行的堆栈溢出。我已使用随机数据将有问题的页面缩减到最低限度,如下所示:

<html><body>
    <div id="info">
        Loading...
    </div>
    <script>

        var d = [];
        var i = 0;

        d[i++] = [
        "XHC_14",
        0
        ];

        d[i++] = [
        "ZXS_26",
        "UVT_27",
        "QML_3149",
        "MJO_3150",
        15993327
        ];

        d[i++] = [
        "VKG_3156",
        "ZEA_3157",
        "KZG_3159",
        "MNA_3162",
        "AKX_3163",
        "KLK_3164",
        618601
        ];

        // more array initialization ...

        info.innerHTML = "<h1>Ready!</h1>"; // this will only show if the initialization succeeded
    </script>
</body></html>

加载。。。
var d=[];
var i=0;
d[i++]=[
“XHC_14”,
0
];
d[i++]=[
“ZXS_26”,
“UVT_27”,
“QML_3149”,
“MJO_3150”,
15993327
];
d[i++]=[
“VKG_3156”,
“ZEA_3157”,
“KZG_3159”,
“MNA3162”,
“AKX_3163”,
“KLK_3164”,
618601
];
//更多数组初始化。。。
info.innerHTML=“就绪!”;//这将仅在初始化成功时显示
实际文件约为500k行,重复阵列初始化约14k次。此处提供真实文件:

只有当阵列初始化足够大时,它才会崩溃。我对各种变体进行了三元组,包括将其放入函数中以赋予其自己的范围,但没有任何效果。它适用于我测试的所有其他浏览器,包括XP上的IE8。我的配置是Win7和IE 11.0.9600.17107(完全更新)


有人知道为什么会发生这种情况吗?

该文件非常可怕,对Visual Studio和记事本++来说都是死亡之吻。。。事实上,IE11。你把翻译搞砸了

我通过使用

JSON.serialize(d)
在另一个浏览器中,然后将输出作为字符串粘贴到源文件中

然后:

现在它加载到IE11中


因此,解决方案是将数据结构写成JSON字符串并对其进行解析。

我认为这不是运行时的问题。我认为您在编译器/解释器中达到了一些极限。这是一个相当大的源文件。我可能会考虑将数据外部化,并尝试通过XMLHttpRequest加载数据。我不能,因为文件的点是自包含的(它是由生成的基于HTML的文件列表创建的)。我应该补充一下:锯齿形数组似乎是问题的一部分。如果只取一个dir[i++]并乘以相同的大小,则不会发生这种情况。有趣的解决方法。虽然它没有给出导致这次事故的原因的答案。我想知道这是否是IE11中的一个bug?我想这很清楚。您的代码正在破坏解释器,因为它已耗尽内存(堆栈空间)。这是一个bug还是一个设计特性还存在争议(我想不管哪个堆栈溢出,都可能受到设计的限制)。内存不足是一个bug吗?Visual Studio和Notepad++是否都有相同的错误?如果你足够努力,所有浏览器都会有一个限制。我认为你的文件是一个相当艰难的推动。(…而且我们一直都知道IE有点垃圾…)。
var jsonStr = '[[blablabla...I go on foreeeeeever]]';
var d=JSON.parse(jsonStr);