【发布时间】:2016-05-31 06:56:20
【问题描述】:
我正在尝试在 Ionic Framework 中创建一个用于列出目的的数组,并检查所有呼叫中心名称的第一个字符以将它们添加到字母数组中。
for (var i = 0; i < callcenterList.length; i++) {
var value = callcenterList[i]._owner && callcenterList[i]._owner.company.name[0];
if ((alphabet.indexOf(value) == -1 && isNaN(parseInt(value))) ||
(isNaN(alphabet[0]) && !isNaN(value))) {
if(!isNaN(value))
value = 123;
alphabet.push(value);
callcenterList.splice(i, 0, {
divider: {
alphabet: value
}
});
}
};
将 value = 123 替换为 value = '#' 会导致 Google Chrome 和 Google Chrome Canary 出现故障并立即使用 Mac 中高达 100% 的 RAM。
这是一个 Javascript 错误还是与 Google Chrome 本身有关?
【问题讨论】:
-
以前从未听说过那个...
-
如果你使用双引号而不是单引号会有什么不同吗?
-
好吧,如果它是#,那么它就不是字母表的一部分,也不是数字,而且由于您根据 callcenterList.length 限制循环(并推入循环)我不认为它与 # 和 chrome 无关? :)
-
@Icepickle isNaN('#') 返回真。该问题与将值更改为 123 或 # 以及它是否为数字无关。如果我将值更改为 ='AA',则不会出现问题。
-
@Yagiz,这只是您将元素推入您正在迭代的列表中的一种奇特方式,这可能会导致严重问题,就像您在此处看到的那样
标签: javascript arrays infinite-loop