Не находит константну (в основном на 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 шт):
Речь идёт о поддержке стандарта JS - ES6, который даёт возможность использовать let, const и ещё кучу крутых штук, что дал нам этот стандарт.
Как же быть?
Ответа два:
Забить на Safari.
Начать забастовку, как делали единицы сайтов, которые при в ходе с IE выдавали надпись "Ваш браузер устарел, установите ...", только сейчас делать такое для Safari, может когда-нибудь гиганты маркетинга из IOS подумают не о деньгах, а о пользователях\разработчиках и обновят браузер или сделают как "микро-мягкие", перейдут на движок Chromium.
Поддерживать Safari.
Писать по стандарту ES5, если требуется ES6 - использовать полифилы, перебирать кучу сайтов с баг-фиксами по Safari.
Можно, кстати, не писать под стандарт ниже, а использовать транскриптеры, например Babel.js. Вот например пример вашего кода, который я "перегнал" под ES5.