gpt4 book ai didi

javascript - 在 Internet Explorer 11 中加载巨大的数组导致堆栈溢出

转载 作者:数据小太阳 更新时间:2023-10-29 04:46:10 25 4
gpt4 key购买 nike

我有一个(生成的)页面,其中有一个非常大的锯齿状数组。它不会在 IE11 中初始化;我得到 SCRIPT28: Out of stack spaceSCRIPT2343: Stack overflow at line: 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>

真实文件大约有 500k 行,重复数组初始化大约 14k 次。此处提供真实文件:ie11_stack_overflow_problem.zip

只有当数组初始化足够大时才会崩溃。我有各种变体,包括将它放在一个函数中以赋予它自己的范围,但无济于事。它适用于我测试过的所有其他浏览器,包括 XP 上的 IE8。我的配置是 Win7 和 IE 11.0.9600.17107(完全更新)。

谁能弄清楚为什么会这样?

最佳答案

那个文件太可怕了,对 Visual Studio 和 Notepad++...以及 IE11 来说都是死亡之吻。你炸毁了解释器。

我通过使用

让它工作
JSON.serialize(d)

在另一个浏览器中,然后将输出作为字符串粘贴到源文件中。

然后:

var jsonStr = '[[blablabla...I go on foreeeeeever]]';
var d=JSON.parse(jsonStr);

现在它在 IE11 中加载。

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

关于javascript - 在 Internet Explorer 11 中加载巨大的数组导致堆栈溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23737596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com