В 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);

0 ответов

Другие вопросы по тегам