Сегодня создадим мини-игру в консоли, где ты застрял в цифровом лабиринте. Нужно найти выход, пока не закончились ходы. Каждый шаг — выбор направления, и только логика поможет выбрать правильный путь.
В этом посте:
• Генерируем случайный лабиринт и случайный выход;
• Реализуем движение по сетке (w/a/s/d);
• Добавляем ограничение по ходам;
• Проверяем победу и поражение.
Игра обучает базовой логике “состояний” в программах, вложенным проверкам и циклам пользовательского взаимодействия.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤7🔥7
This media is not supported in your browser
VIEW IN TELEGRAM
На сайте можно учиться прямо в браузере, без установки среды и лишней теории. Уроки состоят из коротких заданий с кодом: пишешь, видишь результат, работаешь над ошибками и двигаешься дальше. Постепенно проходишь весь путь, от основ синтаксиса до работы с DOM и API.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤7🔥5🤝1
За каждым свойством стоит дескриптор — флаги
writable, enumerable, configurable, а также get и set. Через них движок решает, что можно менять, а что нет.В этом гайде:
• Разберём, как движок хранит метаданные свойств;
• Создадим настоящие readonly-поля;
• Сделаем computed-свойство с валидацией;
• Поймём, как freeze() и seal() просто массово меняют флаги.
Так дескрипторы превращают объекты из простых структур в механизмы с правилами.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍7🔥6🤝1
Знали, что fetch-запрос можно отменить прямо из JS?
Когда пользователь меняет фильтр или быстро вводит новый текст, старые запросы продолжают работать и мешают актуальным данным.
Если запрос больше не нужен, просто “абортим”:
При отмене
🔥 Деталь, которая делает код предсказуемым даже под нагрузкой.
📣 JS Ready | #совет
Когда пользователь меняет фильтр или быстро вводит новый текст, старые запросы продолжают работать и мешают актуальным данным.
AbortController создаёт сигнал, который можно “прикрепить” к fetch:const controller = new AbortController();
fetch('/api/data', { signal: controller.signal });
Если запрос больше не нужен, просто “абортим”:
controller.abort();
При отмене
fetch выбрасывает AbortError — это нормально, можно отловить и проигнорировать:fetch(url, { signal: controller.signal })
.catch(err => {
if (err.name !== 'AbortError') throw err;
});🔥 Деталь, которая делает код предсказуемым даже под нагрузкой.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15👍9🔥7
В этой шпаргалке собраны основные приёмы и функции для работы с ошибками: try, catch, finally, throw, а также логирование и проверка типов ошибок. Они применяются при работе с API, асинхронными операциями и бизнес-логикой. Умение правильно обрабатывать ошибки делает код устойчивым и предсказуемым.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤7🔥6