javascript forEach - 相同的代码在chrome windows / IOS上的行为不同

时间:2017-07-07 06:23:29

标签: javascript ios foreach ecmascript-6

let { classList } = document.body;

classList.forEach((className) => {
    if (className.startsWith('somePrefix')) {
        classList.remove(className);
    }
});

以上代码在非IOS浏览器上运行正常,但会失败:

TypeError: Cannot read property 'startsWith' of undefined

在IOS浏览器上(在 iphone 6s IOS 10 Safari和Chrome 上测试),以防删除一个或多个类。

这是因为在非IOS浏览器上,一旦你在迭代过程中删除了一个元素,它就会知道将迭代次数减少1,而在IOS上,它会尝试继续使用{的原始迭代次数。 {1}}。

我不是在寻找一个解决方案(很容易解决)但是为了解释为什么它会发生什么,在IOS上实现的方式有何不同? (可能是undefinedsforEach等)

感谢。

0 个答案:

没有答案