В IOS Mobile Chrome и Safari для мобильных устройств не гарантируется инициализация массива, созданного с помощью "[]".
Массив, созданный с помощью '[]' в горячем коде сегмента, может быть проигнорирован для инициализации.
Устройство: Iphone 7, Iphone XS
IOS: 12,1
Мобильный Chrome: 70.0.3538.75
Вот воспроизведенный код:
function doFrame() {
var count = 10000;
while (count--) {
mobileIOSChromeBug();
mobileIOSSafariBug();
}
requestAnimationFrame(doFrame);
}
function mobileIOSChromeBug() {
var one = Math.random() < 0.5 ? [1, 2] : undefined;
var two = Math.random() < 0.5 ? [1, 2] : undefined;
var array = [0, 0, 0, 0];
if (one) {
array[0] = one[0];
array[1] = one[1];
}
if (two) {
array[2] = two[0];
array[3] = two[1];
} else if (array[2] !== 0) {
alert('chrome error:' + array.join(','));
}
}
function mobileIOSSafariBug() {
var array = [0, 0, 0];
if (Math.random() < 0.5) {
array[0] = 1;
array[1] = 1;
}
if (Math.random() < 0.5) {
array[2] = 3;
} else if (array[2] !== 0) {
alert('safari error:' + array.join(','));
}
}
setTimeout(doFrame, 10);