在 MS Edge 中通过 for 循环创建对象失败

Object creation via for loop in MS Edge fails

我们正面临 MS Edge 浏览器的一个奇怪问题,该问题在某些环境中更常发生,而在某些环境中则从不发生。

var myObject = {};
var someNumber = 8;
for (var i = -someNumber; i <= someNumber; i++) {
    myObject[i] = {};
}

我们显然希望最后有一个对象包含名为 -8、-7、-6、... 直到 8 的元素。稍后将用数据填充它。但在 Edge 中,有时会发生这种情况,变量 myObject 在此循环后仅包含“8”作为元素。所有其他值都不存在。有没有人经历过类似的事情?

我们试图直接为生成的元素分配一些值,但这也没有效果。

有人知道吗?

问题出在 Edge 的 for 循环处理中。我意识到,当我在循环中不使用负数而只是从 0 开始时,这种情况就不会再发生了。

var myObject = {};
var someNumber = 8;
for (var i = 0; i <= 2 * someNumber; i++) {
    myObject[i - someNumber] = {};
}