Не находит константну (в основном на IOS)

Описание

В проекте, при переходе на одну из страниц, сайт должен проверять присутствуют данные в localStorage? Если да то они должны быть присвоены константу sheet и обработаны. Основная структура кода выглядит так:

if (archivePreview.data) {
    const sheet = archivePreview.data;
    ...
    function search(pattern) {
        ...
        for (const pole of sheet) {

...где archivePreview экземпляр специального класса который получает данные из localStorage. Ошибка...

Can't find variable sheet

...выскакивает в for (const pole of sheet) { (в основном на IOS, всего раз попался конфликтующий Android) и совершенно нет понятий почему.

Дополнение

Собственно вот исходники. Ошибка возникает, если импортировать ссылку...

пример ссылки: https://github.com/eccs0103/Cheatsheet/blob/2ae0c81656ee1a7256c47e7441c1e65e6c6d21f3/scripts/database/ecology-18-12-2022.json

...базы данных в сайт, через кнопку Import и нажать по появившийся кнопке.

Вопрос

Почему возникает такая ошибка? Почему в основном на устройствах с IOS? Какие тонкие моменты есть на IOS к чему следовало бы наблюдать чтобы дальше не столкнутся с такими ошибками?

Дополнительно

В основная проверка была на версии IOS 16.0.2 и соответственно у Safari та же версия.


Ответы (1 шт):

Автор решения: De.Minov

Речь идёт о поддержке стандарта JS - ES6, который даёт возможность использовать let, const и ещё кучу крутых штук, что дал нам этот стандарт.

Как же быть?

Ответа два:

  1. Забить на Safari.

    Начать забастовку, как делали единицы сайтов, которые при в ходе с IE выдавали надпись "Ваш браузер устарел, установите ...", только сейчас делать такое для Safari, может когда-нибудь гиганты маркетинга из IOS подумают не о деньгах, а о пользователях\разработчиках и обновят браузер или сделают как "микро-мягкие", перейдут на движок Chromium.

  2. Поддерживать Safari.

    Писать по стандарту ES5, если требуется ES6 - использовать полифилы, перебирать кучу сайтов с баг-фиксами по Safari.
    Можно, кстати, не писать под стандарт ниже, а использовать транскриптеры, например Babel.js. Вот например пример вашего кода, который я "перегнал" под ES5.

→ Ссылка