我有这样一段代码
_.each(course, function(value, key) {
course[key+"test"] = value + 1;
});
这段代码在chrome下,是ok的。但是ie8
下会报内存溢出。如果去掉test,就好了。
_.each(course, function(value, key) {
course[key] = value + 1;
});
求大神指点一下。谢谢了。
我有这样一段代码
_.each(course, function(value, key) {
course[key+"test"] = value + 1;
});
这段代码在chrome下,是ok的。但是ie8
下会报内存溢出。如果去掉test,就好了。
_.each(course, function(value, key) {
course[key] = value + 1;
});
求大神指点一下。谢谢了。
换一种写法
javascript
var tmpCourse = {}; _.each(course, function(value, key) { tmpCourse[key] = value; tmpCourse[key+"test"] = value + 1; }); course = tmpCourse;
13 回答12.9k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
6 回答1.1k 阅读
2 回答1.3k 阅读✓ 已解决
不知道LZ的
_.each
是什么,很有可能是因为foreach循环会动态查询course的所有键值,由于键值不断增多,造成了死循环,造成内存溢出。比如course是
{a:1}
,死循环过程就是这样:ECMAScript的标准里面未定义
for-in
遍历顺序,新增键是否被遍历完全依赖于UA,无法强制保证新增的键会/不会被遍历到。underscore避免这个死循环的方法是首先用一个数组缓存当前的keys(ECMAScript 5里面有
Object.keys
,fallback方法则是for in
循环),然后循环keys数组,这样在遍历过程中增加的key不会被遍历到。