ios9 Safari错误计算总和

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios9 Safari错误计算总和相关的知识,希望对你有一定的参考价值。

我有一些代码可以计算循环中哈希中键/值的总和。它似乎是在ios9 Safari上以不同的方式计算总和,与其他任何地方相比。虽然我可以找到一种方法来修复这个单独的用例,但是我们在整个大型代码库中都使用了这种语法,所以我正在寻找一些理解

  1. 为什么会在ios9中发生这种情况
  2. 如果有一种全局修复它的方法适用于可能在其上有Vue __ob__对象的所有对象。

试试这里的代码:https://liveweave.com/kKo88G。我也粘贴在下面:

// Define a hash
var totalItems, sum, type, value
totalItems = {}
totalItems['0'] = 3

// This definition of __ob__ is done dynamically by Vue,
// but I include it here by way of example of what breaks in ios9
totalItems.__ob__ = new Object()
Object.defineProperty(totalItems, '__ob__', {
    enumerable: false,
    writable: true,
   configurable: true
  });

// Loop through the hash
sum = 0
for (type in totalItems) {
  value = totalItems[type];
  sum += value;
}

// sum is 6 in ios9 Safari -- it loops through the '0' key twice 
// sum is 3 in all other browsers and newer ios versions!

更新:

在进一步调查之后,这似乎是ios9设备上的Safari中的一个错误。它既适用于带有键'0'的哈希值,也适用于数组。它似乎只是for-in循环的问题。 .forEach.reduce等工作正常。 https://liveweave.com/znUFU2展示了这一点。如果liveweave首先加载缓慢,则刷新页面几次。 js fiddle / codepen / etc.目前不适用于ios9。我已向Apple报告此事。

答案

通常使用for ... in不是一个好主意。我相信你的问题与此有关。

您可以使用**或**进行常规**循环。

请参阅here中有关...的详细解释

以上是关于ios9 Safari错误计算总和的主要内容,如果未能解决你的问题,请参考以下文章

iOS9 mobile safari Landscape css bug with position: fixed;

移动 Safari 多选错误

Safari 9(在 iOS9 中)忽略 CSS 设置

网站在 iOS 的 Safari 上崩溃

ios9.3无法点开网站链接 ios9.3不能打开Safari内链接怎么解决

有没有办法从 iOS9 的状态栏中隐藏“返回 Safari”?