JavaScript Ready | Программирование
8.18K subscribers
987 photos
60 videos
524 links
Авторский канал по разработке на JavaScript.
Ресурсы, обучения, задачи, шпаргалки.
Ежедневно информация пополняется!

Cотрудничество: @energy_c
Download Telegram
📱 Функция, которая запускается сама!

Иногда нужно выполнить код сразу, но не засорять глобальную область:
function init() {
console.log('Init logic...');
}
init();


Здесь всё работает, но init остаётся в памяти и доступна извне.

Решение — IIFE. Функция создаётся и вызывается сразу:
(function () {
console.log('This runs immediately!');
})();


Можно использовать стрелочную форму:
(() => {
console.log('Executed instantly!');
})();


Всё, что внутри, живёт только в этой области, никаких глобальных переменных и конфликтов имён:
(() => {
const token = 'abc123';
})();
console.log(typeof token); // undefined


🔥 Выполняешь код сразу и не оставляешь мусора в глобальной зоне.

📣 JS Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍10🔥6
Симулятор броска монеты на JavaScript!

Простая реализация подбрасывания монеты с небольшой задержкой — имитация реального ожидания результата.

Создаём массив сторон монеты:
const sides = ["Орёл 🦅", "Решка 💰"];


Функция выводит сообщение, ждёт 2 секунды и затем выбирает случайную сторону:
function flipCoin() {
console.log("Бросаем монету...");

setTimeout(() => {
const result = sides[Math.floor(Math.random() * sides.length)];
console.log(`Выпало: ${result}`);
}, 2000);
}


Вызываем функцию, чтобы выполнить симуляцию:
flipCoin();


🔥 Отличный пример работы с асинхронностью, случайностью и имитацией задержки — базовые приёмы для CLI-анимаций и простых игр.

📣 JS Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍9❤8🤝2
📱 Разбираем Date API — основы работы с датами и временем!

В этой шпаргалке собраны методы для создания, измерения и форматирования дат. Они применяются при разработке отчётов, планировщиков, логов и API-интеграций. Уверенное владение Date позволяет работать с временем предсказуемо, корректно и без ошибок локализации.

📣 JS Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥13❤11🤝1
Определяем язык браузера!

Определяем язык предпочтений пользователя, чтобы автоматически загрузить нужную локализацию или отобразить корректный контент.

Браузер хранит языковые настройки в объекте navigator:
const userLang = navigator.language;
console.log(`Язык браузера: ${userLang}`); // например: "en-US"


Если нужно использовать только код языка (без региона), можно аккуратно выделить его:
const langCode = userLang.split('-')[0].toLowerCase();
console.log(`Код языка: ${langCode}`); // "en"


Для более точной адаптации лучше учитывать весь список предпочтений пользователя:
const preferred = navigator.languages?.length
? navigator.languages
: [navigator.language || 'en'];
console.log('Приоритет языков:', preferred); // ["en-US", "ru", "de"]


Чтобы гарантировать корректные коды локалей, можно нормализовать их по стандарту BCP-47:
const locales = Intl.getCanonicalLocales(preferred);
console.log('Нормализованные локали:', locales)


🔥 Такой подход лежит в основе автоматического выбора локали, подбора перевода интерфейса и настройки форматов дат и чисел.

📣 JS Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15❤7👍7🤝2😁1
📱 Консольная игра змейка!

Сегодня покажу, как сделать настоящую мини-игру змейку прямо в терминале — с управлением, движением и логикой столкновений.

В этом посте:
• Работа с real-time input через readline;

• Отрисовка ASCII-анимации в консоли;

• Движение, рост и завершение игры при коллизии.


Прекрасная практика массивов, циклов, координат и работы с событиями.

📣 JS Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20👍11❤6
📱 Реализация таймаута для Promise без внешних библиотек!

Иногда fetch() или любой промис может зависнуть, а код просто ждёт.

Promise.race(), как вариант решения: запускает несколько промисов и возвращает результат первого завершившегося:
const withTimeout = (ms, task) =>
Promise.race([
task,
new Promise((_, reject) =>
setTimeout(() => reject(new Error('Timeout')), ms)
)
]);


Теперь можно ограничить жизнь любого промиса:
await withTimeout(3000, fetch('/api/data'));


Если запрос не успеет за 3 секунды, вылетит Error('Timeout'), и код не будет висеть.

Также можно добавить отмену при таймауте через AbortController:
const fetchWithTimeout = (url, ms) => {
const controller = new AbortController();
const timer = setTimeout(() => controller.abort(), ms);
return fetch(url, { signal: controller.signal })
.finally(() => clearTimeout(timer));
};


🔥 Таймауты и отмены — это то, что делает код надёжным.

📣 JS Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍8❤6
📱 Пишем умный калькулятор покупок!

Создаём консольную утилиту, которая превращает обычный список товаров в аккуратный чек с подсчётом скидок, налогов и итоговой суммы.

В этой задаче:
• Реализуем обработку пользовательского ввода через readline;

• Формируем корзину и рассчитываем скидки, налоги и итог;

• Выводим красиво оформленный чек, как в настоящем магазине.


Проект учит продумывать структуру, обработку ошибок и удобство вывода для пользователя.

📣 JS Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥11🤝5❤4