В IOS Mobile Chrome и Mobile Safari массив, созданный с помощью «[]», не гарантируется для инициализации. - PullRequest
0 голосов
/ 28 ноября 2018

Массив, созданный с помощью '[]' в горячем коде сегмента, может игнорироваться для инициализации.

Устройство: Iphone 7, Iphone XSIOS: 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);
...