我有这样一段代码
_.each(course, function(value, key) {
course[key+"test"] = value + 1;
});
这段代码在chrome下,是ok的。但是ie8下会报内存溢出。如果去掉test,就好了。
_.each(course, function(value, key) {
course[key] = value + 1;
});
求大神指点一下。谢谢了。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
不知道LZ的
_.each是什么,很有可能是因为foreach循环会动态查询course的所有键值,由于键值不断增多,造成了死循环,造成内存溢出。比如course是
{a:1},死循环过程就是这样:ECMAScript的标准里面未定义
for-in遍历顺序,新增键是否被遍历完全依赖于UA,无法强制保证新增的键会/不会被遍历到。underscore避免这个死循环的方法是首先用一个数组缓存当前的keys(ECMAScript 5里面有
Object.keys,fallback方法则是for in循环),然后循环keys数组,这样在遍历过程中增加的key不会被遍历到。换一种写法