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

Cотрудничество: @energy_c
Download Telegram
📱 Speech & Voice в JavaScript — добавляем голос в интерфейс!

JS может не только считать и анимировать, он способен озвучивать текст и понимать речь.

Сегодня в гайде:
• Добавим синтез речи с выбором голоса и скорости;

• Реализуем простое распознавание голоса;

• Объединим всё в мини-ассистента, который “слышит” и отвечает.


Демонстрация того, что JS не просто язык логики, а инструмент, который способен делать интерфейсы живыми и отзывчивыми на голос!

📣 JS Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19👍8❤7🤝1
Знаете, что функция может сама запоминать свои результаты и работать в десятки раз быстрее?

Это называется мемоизация — приём, когда результаты вычислений кешируются и повторно не считаются.

Часто пишут лишние конструкции:
function slowFn(x) {
if (!cache[x]) cache[x] = x ** 2;
return cache[x];
}


Но в JavaScript есть Map, он делает это в одну строку, безопасно и элегантно:
const slowFn = x => cache.get(x) ?? cache.set(x, x ** 2).get(x);


Здесь ?? проверяет наличие значения, а Map гарантирует надёжность даже для сложных ключей — объектов, массивов, функций.

📣 JS Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍6🤝6❤2
Реактивный объект на JavaScript!

Реализуем объект, который отслеживает обращения к своим свойствам и изменения данных — пример работы с метапрограммированием и механизмом Proxy.

Создаём исходный объект:
const user = { name: "Alex", age: 25 };


Сначала определим реакцию на чтение данных:
const reactive = new Proxy(user, {
get(target, key, receiver) {
if (typeof key === "symbol") return Reflect.get(target, key, receiver);
console.log(`Чтение: ${String(key)}`);
return Reflect.get(target, key, receiver);
},


Теперь добавим обработку изменений свойств:
  set(target, key, value, receiver) {
if (typeof key !== "symbol") {
console.log(`Изменение: ${String(key)} = ${value}`);
}
return Reflect.set(target, key, value, receiver);
}
});


Проверяем поведение:
reactive.name;     // Чтение: name
reactive.age = 30; // Изменение: age = 30


🔥 Такой подход лежит в основе реактивных систем и используется для отслеживания состояния без дополнительных обёрток.

📣 JS Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11🤝8❤7
😁23❤6👍3🔥2🤝2
📱 Разбираем работу с окнами и браузером!

В этой шпаргалке собраны методы и свойства объектов window и navigator: управление окнами, вкладками, адресами, буфером обмена и прокруткой. Эти инструменты применяются при создании интерактивных интерфейсов, обработке навигации и интеграции с системными API браузера.

📣 JS Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥6❤5🤝2
This media is not supported in your browser
VIEW IN TELEGRAM
👩‍💻 Нужно быстро понять, что происходит в коде?

Console Ninja — расширение, которое выводит результаты console.log, warn и error прямо рядом со строками, где они вызываются. Видите значения переменных мгновенно, не отвлекаясь от кода. Особенно удобно при работе с React, Vue или Node.js, дебаг становится наглядным и быстрым.

📣 JS Ready | #vscode
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤12🔥7
📱 Угадай число — бот играет против тебя!

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

В этом посте:
• Работаем с интерактивным вводом в консоли;

• Реализуем стратегию бинарного поиска;

• Добавляем вежливое завершение и живые фразы.


Алгоритм делит диапазон пополам, пока не найдёт твой вариант. В среднем угадывает за 7 шагов из 100 возможных.

📣 JS Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍6🔥6
Случайное блуждание по сетке на JavaScript!

Создадим простой алгоритм, который строит случайный маршрут по сетке — базовый элемент для игр, генераторов карт и симуляций случайных процессов.

Задаём размеры и стартовую позицию:
const size = 5;
let x = 0, y = 0;
const path = [[x, y]];


Возможные шаги:
const moves = [
[1, 0], [-1, 0],
[0, 1], [0, -1]
];


Генерируем маршрут:
for (let i = 0; i < 10; i++) {
const [dx, dy] = moves[Math.floor(Math.random() * moves.length)];
const newX = x + dx;
const newY = y + dy;


Проверяем, чтобы не выходить за границы:
  if (newX >= 0 && newX < size && newY >= 0 && newY < size) {
x = newX;
y = newY;
path.push([x, y]);
}
}


Выводим результат:
console.table(path);


🔥 Такой подход используется в моделировании случайных процессов и визуализации блужданий частиц.

📣 JS Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9❤6👍6
📱 Tagged Templates — когда строка становится языком!

JS умеет больше, чем просто конкатенировать строки.
С помощью “тегов” можно превратить шаблон в функцию, которая сама решает, как подставлять данные, фильтровать ввод и даже менять структуру строки.

Сегодня в гайде:
• Разберём, как работает механизм тегов;

• Сделаем свой sanitize-тег для HTML;

• Реализуем mini-i18n без библиотек;

• Построим DSL вроде CSS в styled-components.


Увидишь, как строки в JS превращаются в контролируемые структуры данных и поймёшь, что шаблон — это не просто текст, а точка расширения языка.

📣 JS Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤14👍6🔥4🤝2