首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有"+=“的Javascript中内存溢出

带有"+=“的Javascript中内存溢出
EN

Stack Overflow用户
提问于 2013-08-12 10:36:19
回答 3查看 133关注 0票数 1

我需要连接数百个像这样的Javascript字符串:

代码语言:javascript
运行
复制
var result = '';
for (var i = 0; i < 300; i ++ ) {
    result += DATA[i] + 'Some Dynamic Text';
}

DATA[i]相当大的(比如300‘s或更多,它代表的是图像的base64 )。

当我执行这段代码时,浏览器会弹出一个内存溢出错误(断点是result += DATA[i])

如何优化这些代码以避免此类内存问题?

====编辑====

我之前没有说清楚,所以您可以认为DATA[i]相当大,而我不能更改它。每一个连接都会附加一些动态文本。

EN

回答 3

Stack Overflow用户

发布于 2013-08-12 10:46:15

可以使用try {} catch进行调试。

代码语言:javascript
运行
复制
var result = '';
for (var i = 0; i < 300; i ++ ) {
    try {
      result += DATA[i];
    }
    catch ( e ) {
        console.log('An error occured on DATA[' + i + ']');
        console.log('Value:' + DATA[i]);
        console.log(e);
    }
}

为什么要将图像存储在base64中并将其发送到前端,因为您希望将其脱机存储?那不是那个缓存控制的目的吗?

如果没有更多的信息,我就不能建议你使用这种方法:

但是评价者会研究如何在图像本身上设置一个持久的缓存。

顺便说一句,如果Array.join是本地数组,则可以使用DATA

代码语言:javascript
运行
复制
var result = DATA.join('');

如果DATA是一个类似于对象的数组(arguments{'0': 1, '1': 2, length: 2}),您可以使用:

代码语言:javascript
运行
复制
var result = [].join.call(DATA, '');

这样可以解决内存溢出问题,但速度会更快。

票数 0
EN

Stack Overflow用户

发布于 2013-08-12 11:28:50

请看这里..。这应该对你有帮助

Javascript and VERY LONG string

此外,请参阅Javascript StringBuilder at -

http://www.codeproject.com/Articles/12375/JavaScript-StringBuilder

票数 0
EN

Stack Overflow用户

发布于 2013-08-12 10:38:32

如果你用

代码语言:javascript
运行
复制
result = DATA.join("");
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18184847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档