ios9 Safari просчитывает сумму - PullRequest
       15

ios9 Safari просчитывает сумму

0 голосов
/ 17 октября 2018

У меня есть некоторый код, который вычисляет сумму ключей / значений в хэше в цикле.Похоже, что вычисление суммы в Safari ios9 происходит иначе, чем где бы то ни было.Хотя я могу найти способ исправить этот индивидуальный вариант использования, мы используем этот тип синтаксиса во всей нашей большой кодовой базе, поэтому я ищу некоторое понимание

  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!

ОБНОВЛЕНИЕ:

После дальнейших исследований это похоже на ошибку в Safari на устройствах ios9.Это относится как к хэшам с ключом «0», так и к массивам.Это только кажется, что проблема с for-in петлями..forEach, .reduce и т. Д. Работают нормально.https://liveweave.com/znUFU2 демонстрирует это.Обновите страницу пару раз, если liveweave загружается медленно.JS Fiddle / Codepen / и т. д.не работает на ios9 в данный момент.Я сообщил об этом в Apple.

1 Ответ

0 голосов
/ 14 апреля 2019

Обычно использование для ... в не очень хорошая идея.Я считаю, что ваша проблема связана с этим.

Вы можете использовать для ... из ** или сделать обычную ** для петлю.

См. Подробное объяснение того, что происходит с ... в здесь

...