JS может не только считать и анимировать, он способен озвучивать текст и понимать речь.
Сегодня в гайде:
• Добавим синтез речи с выбором голоса и скорости;
• Реализуем простое распознавание голоса;
• Объединим всё в мини-ассистента, который “слышит” и отвечает.
Демонстрация того, что JS не просто язык логики, а инструмент, который способен делать интерфейсы живыми и отзывчивыми на голос!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19👍8❤7🤝1
Знаете, что функция может сама запоминать свои результаты и работать в десятки раз быстрее?
Это называется мемоизация — приём, когда результаты вычислений кешируются и повторно не считаются.
Часто пишут лишние конструкции:
Но в JavaScript есть Map, он делает это в одну строку, безопасно и элегантно:
Здесь
📣 JS Ready | #совет
Это называется мемоизация — приём, когда результаты вычислений кешируются и повторно не считаются.
Часто пишут лишние конструкции:
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 гарантирует надёжность даже для сложных ключей — объектов, массивов, функций.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍6🤝6❤2
Реактивный объект на JavaScript!
Реализуем объект, который отслеживает обращения к своим свойствам и изменения данных — пример работы с метапрограммированием и механизмом Proxy.
Создаём исходный объект:
Сначала определим реакцию на чтение данных:
Теперь добавим обработку изменений свойств:
Проверяем поведение:
🔥 Такой подход лежит в основе реактивных систем и используется для отслеживания состояния без дополнительных обёрток.
📣 JS Ready | #практика
Реализуем объект, который отслеживает обращения к своим свойствам и изменения данных — пример работы с метапрограммированием и механизмом 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
🔥 Такой подход лежит в основе реактивных систем и используется для отслеживания состояния без дополнительных обёрток.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11🤝8❤7
В этой шпаргалке собраны методы и свойства объектов window и navigator: управление окнами, вкладками, адресами, буфером обмена и прокруткой. Эти инструменты применяются при создании интерактивных интерфейсов, обработке навигации и интеграции с системными API браузера.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, дебаг становится наглядным и быстрым.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤12🔥7
Сегодня создаём консольную мини-игру, где JS сам угадывает число, которое ты загадал. Без случайностей, только чистая логика, бот будет рассуждать, как настоящий игрок, сужая диапазон шаг за шагом!
В этом посте:
• Работаем с интерактивным вводом в консоли;
• Реализуем стратегию бинарного поиска;
• Добавляем вежливое завершение и живые фразы.
Алгоритм делит диапазон пополам, пока не найдёт твой вариант. В среднем угадывает за 7 шагов из 100 возможных.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍6🔥6
Случайное блуждание по сетке на JavaScript!
Создадим простой алгоритм, который строит случайный маршрут по сетке — базовый элемент для игр, генераторов карт и симуляций случайных процессов.
Задаём размеры и стартовую позицию:
Возможные шаги:
Генерируем маршрут:
Проверяем, чтобы не выходить за границы:
Выводим результат:
🔥 Такой подход используется в моделировании случайных процессов и визуализации блужданий частиц.
📣 JS Ready | #практика
Создадим простой алгоритм, который строит случайный маршрут по сетке — базовый элемент для игр, генераторов карт и симуляций случайных процессов.
Задаём размеры и стартовую позицию:
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);
🔥 Такой подход используется в моделировании случайных процессов и визуализации блужданий частиц.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9❤6👍6
JS умеет больше, чем просто конкатенировать строки.
С помощью “тегов” можно превратить шаблон в функцию, которая сама решает, как подставлять данные, фильтровать ввод и даже менять структуру строки.
Сегодня в гайде:
• Разберём, как работает механизм тегов;
• Сделаем свой sanitize-тег для HTML;
• Реализуем mini-i18n без библиотек;
• Построим DSL вроде CSS в styled-components.
Увидишь, как строки в JS превращаются в контролируемые структуры данных и поймёшь, что шаблон — это не просто текст, а точка расширения языка.
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