❗️Что будет на выходе:
Ответ:1
JavaScript test | #JavaScript & Max
function* infiniteGenerator() {
let i = 0;
while (true) {
yield i++;
}
}
const weakMap = new WeakMap();
const gen = infiniteGenerator();
weakMap.set(gen, gen.next().value);
const result = weakMap.get(gen) + gen.next().value;
console.log(result);
Ответ:
JavaScript test | #JavaScript & Max
👍1
❗️Что будет на выходе:
Ответ:I have been coding in <span>JavaScript</span> for <span>10</span> years
JavaScript test | #JavaScript & Max
function highlight(strings, ...values) {
return strings.reduce((result, str, i) => {
const value = values[i] ? `<span>${values[i]}</span>` : '';
return result + str + value;
}, '');
}
const language = 'JavaScript';
const years = 10;
const result = highlight`I have been coding in ${language} for ${years} years`;
console.log(result);
Ответ:
JavaScript test | #JavaScript & Max
👍1
❗️Что будет на выходе:
Ответ:{ id: 42, name: 'Item', count: 3 }
JavaScript test | #JavaScript & Max
function analyze(...items) {
const [first, ...rest] = items;
const { length } = [...rest, 'bonus'];
const result = {
...first,
count: length,
};
console.log(result);
}
analyze({ id: 42, name: 'Item' }, 'a', 'b');
Ответ:
JavaScript test | #JavaScript & Max
👍1
❗️Что будет на выходе:
Ответ:I have been coding in <span>JavaScript</span> for <span>10</span> years
🖥 JavaScript test // чат
function highlight(strings, ...values) {
return strings.reduce((result, str, i) => {
const value = values[i] ? `<span>${values[i]}</span>` : '';
return result + str + value;
}, '');
}
const language = 'JavaScript';
const years = 10;
const result = highlight`I have been coding in ${language} for ${years} years`;
console.log(result);
Ответ:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
❗️Что будет на выходе:
Ответ:{ map: true, weakMap: true }
🖥 JavaScript test // чат
const memoryLeak = () => {
const cache = new Map();
const weakCache = new WeakMap();
const objKey = { id: 123 };
const data = { name: 'User data', value: 42 };
cache.set(objKey, data);
weakCache.set(objKey, data);
// Simulate removing reference to key
const result = { map: cache.has(objKey), weakMap: weakCache.has(objKey) };
// objKey = null; // This would be an error, as const can't be reassigned
return result;
};
console.log(memoryLeak());
Ответ:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Проверяем, открыта ли страница по HTTPS!
Безопасное соединение — важное условие для работы многих Web API. Большинство таких API требуют
Проверить протокол можно так:
Если нужно принудительно перенаправить пользователя на
Также можно быстро вывести текущий адрес страницы:
Такой пример полезен для практики работы с объектом location, управления навигацией и понимания поведения редиректов в браузере
🖥 JavaScript test // чат
Безопасное соединение — важное условие для работы многих Web API. Большинство таких API требуют
secure context — то есть HTTPS или http://localhost.Проверить протокол можно так:
const isSecure = window.location.protocol === "https:";
console.log("Безопасное соединение:", isSecure);
Если нужно принудительно перенаправить пользователя на
HTTPS:if (window.location.protocol !== "https:") {
const { host, pathname, search, hash } = window.location;
window.location.replace(`https://${host}${pathname}${search}${hash}`);
}Также можно быстро вывести текущий адрес страницы:
console.log("Текущий адрес:", window.location.href);Такой пример полезен для практики работы с объектом location, управления навигацией и понимания поведения редиректов в браузере
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Локальное хранилище браузера с использованием объекта
В примере мы используем объект
🖥 JavaScript test // чат
localStorageВ примере мы используем объект
localStorage, доступный в браузере, чтобы сохранить данные, такие как имя пользователя и адрес электронной почты. Мы используем метод setItem() для сохранения данных и метод getItem() для получения данных. Мы также демонстрируем, как можно удалить данные из локального хранилища с помощью метода removeItem().Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Хотите узнать, когда элемент появляется в зоне видимости?
Используйте
Достаточно подключить наблюдение:
Теперь при появлении блока на экране в консоль выведется сообщение.
Можно остановить наблюдение, когда элемент уже показан:
🖥 JavaScript test // чат
Используйте
IntersectionObserver, он срабатывает, когда элемент попадает в viewport:const observer = new IntersectionObserver(([entry]) => {
if (entry.isIntersecting) console.log('👀 Элемент виден');
});Достаточно подключить наблюдение:
observer.observe(document.querySelector('#target'));Теперь при появлении блока на экране в консоль выведется сообщение.
Можно остановить наблюдение, когда элемент уже показан:
observer.unobserve(document.querySelector('#target'));IntersectionObserver работает асинхронно и не блокирует основной поток.Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
4 способа форматировать дату в JavaScript!
Работая с интерфейсами, часто нужно красиво вывести дату — например, "2025-11-14" превратить в "14 ноября 2025" или "14 Nov 2025".
1. Через
2. Через
3. Вручную — через методы
4. Через библиотеки
Эти способы покрывают почти все задачи — от простых форматирований до продвинутых UI с локализацией.
🖥 JavaScript test // чат
Работая с интерфейсами, часто нужно красиво вывести дату — например, "2025-11-14" превратить в "14 ноября 2025" или "14 Nov 2025".
1. Через
toLocaleDateString() — локализованный формат:const date = new Date('2025-11-14T00:00:00Z');
console.log(date.toLocaleDateString('ru-RU', {
day: 'numeric',
month: 'long',
year: 'numeric',
timeZone: 'Europe/Moscow'
}));
// "14 ноября 2025 г."2. Через
Intl.DateTimeFormat() — для повторного использования:const date = new Date('2025-11-14T00:00:00Z');
const fmt = new Intl.DateTimeFormat('en-GB', {
day: '2-digit',
month: 'short',
year: 'numeric',
timeZone: 'UTC'
});
console.log(fmt.format(date));
// "14 Nov 2025"3. Вручную — через методы
Date:const months = [
'января', 'февраля', 'марта', 'апреля', 'мая', 'июня',
'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря'
];
const date = new Date('2025-11-14T00:00:00Z');
const formatted = `${date.getUTCDate()} ${months[date.getUTCMonth()]} ${date.getUTCFullYear()}`;
console.log(formatted);
// "14 ноября 2025"
4. Через библиотеки
dayjs или date-fnsdayjs:import dayjs from "dayjs";
import "dayjs/locale/ru";
dayjs.locale("ru");
console.log(dayjs("2025-11-14").format("D MMMM YYYY"));
// "14 ноября 2025"
date-fns:import { format, parse } from "date-fns";
import { ru } from "date-fns/locale";
const date = parse("2025-11-14", "yyyy-MM-dd", new Date());
console.log(format(date, "d MMMM yyyy", { locale: ru }));
// "14 ноября 2025"Эти способы покрывают почти все задачи — от простых форматирований до продвинутых UI с локализацией.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Promise и цепочки промисов
Благодаря данному видео ты узнаешь, что такое объект Promise. Также ты изучишь состояния Promise: pending, fulfilled, rejected. Продемонстрировано перехватывание ошибки с catch.
➡️ Смотреть видео
🖥 JavaScript test // чат
Благодаря данному видео ты узнаешь, что такое объект Promise. Также ты изучишь состояния Promise: pending, fulfilled, rejected. Продемонстрировано перехватывание ошибки с catch.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
JS Hero — отличный ресурс для изучения JavaScript
Тут JS изучается не по скучным статьям, а через живые практические задания. Особенно полезно, если хочешь довести базу до автоматизма: функции, циклы, условия, строки, массивы. Постепенные уровни усложняются, и к концу ты уже пишешь уверенный код без подсказок.
➡️ jshero.net
🖥 JavaScript test // чат
Тут JS изучается не по скучным статьям, а через живые практические задания. Особенно полезно, если хочешь довести базу до автоматизма: функции, циклы, условия, строки, массивы. Постепенные уровни усложняются, и к концу ты уже пишешь уверенный код без подсказок.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Использование сторонних библиотек
Использование сторонних библиотек позволяет расширить функциональность вашего кода.
🖥 JavaScript test // чат
Использование сторонних библиотек позволяет расширить функциональность вашего кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Убираем дубли, короткий способ получить уникальные значения!
Иногда нужно оставить в массиве только уникальные значения, обычно это превращается в пару строчек фильтрации и проверок.
В ES6 появился Set, вместе со spread-оператором он делает это в одну строку:
Set хранит только уникальные элементы, поэтому дубликаты автоматически отбрасываются:
Этот приём работает для массивов примитивов: number, string, boolean, null, undefined.
🖥 JavaScript test // чат
Иногда нужно оставить в массиве только уникальные значения, обычно это превращается в пару строчек фильтрации и проверок.
В ES6 появился Set, вместе со spread-оператором он делает это в одну строку:
const unique = [...new Set([1, 1, 2, 3, 5, 5, 1])];
Set хранит только уникальные элементы, поэтому дубликаты автоматически отбрасываются:
console.log(unique); // [1, 2, 3, 5]
Этот приём работает для массивов примитивов: number, string, boolean, null, undefined.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
АЙТИШНИКИ БЕСПЛАТНОЕ ОБУЧЕНИЕ
Проект «Terminal» стал крупнейшей библиотекой бесплатного образования. В одном канале собраны курсы, книги, полезные инструменты и практические тренажёры для всех разработчиков:
• Практические курсы и задания
• Книги и статьи известных авторов
• Полезные инструменты и ресурсы
• IT-новости и инсайды
Обучение по всем направлениям: SQL, Python, ML, Frontend, PHP, C++, Go, Git, Linux, QA, Java, Vibe-coding, InfoSec и др.
⌨️ подписаться
Проект «Terminal» стал крупнейшей библиотекой бесплатного образования. В одном канале собраны курсы, книги, полезные инструменты и практические тренажёры для всех разработчиков:
• Практические курсы и задания
• Книги и статьи известных авторов
• Полезные инструменты и ресурсы
• IT-новости и инсайды
Обучение по всем направлениям: SQL, Python, ML, Frontend, PHP, C++, Go, Git, Linux, QA, Java, Vibe-coding, InfoSec и др.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
🧩Что будет на выходе?
function factorial(n) {
return n <= 1 ? 1 : n * factorial(n - 1);
}
console.log(factorial(5));
Ответ: 120
🖥 JavaScript test // чат
function factorial(n) {
return n <= 1 ? 1 : n * factorial(n - 1);
}
console.log(factorial(5));
Ответ: 120
Please open Telegram to view this post
VIEW IN TELEGRAM
❓Что будет на выходе?
const num = 8;
const obj = {
num: 10,
inner: {
num: 6,
getNum: function() {
return this.num;
}
}
};
console.log(obj.inner.getNum());
const getNum = obj.inner.getNum;
console.log(getNum());
Ответ: 6 undefined
🖥 JavaScript test // чат
const num = 8;
const obj = {
num: 10,
inner: {
num: 6,
getNum: function() {
return this.num;
}
}
};
console.log(obj.inner.getNum());
const getNum = obj.inner.getNum;
console.log(getNum());
Ответ: 6 undefined
Please open Telegram to view this post
VIEW IN TELEGRAM
Наблюдение за изменением размера любого элемента!
Есть нативный инструмент
Достаточно наблюдать за элементом:
Теперь любое изменение его ширины или высоты - мгновенно вызывает
Можно остановить наблюдение:
🖥 JavaScript test // чат
Есть нативный инструмент
ResizeObserver, который реагирует именно на изменение размеров конкретного элемента:const ro = new ResizeObserver(entries => {
const rect = entries[0].contentRect;
console.log('width:', rect.width, 'height:', rect.height);
});Достаточно наблюдать за элементом:
ro.observe(document.querySelector('#box'));Теперь любое изменение его ширины или высоты - мгновенно вызывает
callback.Можно остановить наблюдение:
ro.disconnect();
ResizeObserver даёт контроль над размерами элементов и позволяет строить предсказуемые, адаптивные интерфейсы.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Вот отсортированная база с тонной материала (постепенно пополняется):
(363 видео, 87 книги) — Python
(117 видео, 53 книги) — ВАЙБКОД
(174 видео, 91 книги) — DevOps
(415 видео, 68 книги) — Frontend
(137 видео, 93 книги) — DS/ML
(143 видео, 33 книги) — ИБ/Хакинг
(352 видео, 89 книги) — С/С++/C#
(343 видео, 87 книги) — Java/QA
(176 видео, 32 книги) — Git/Linux
(167 видео, 53 книги) — PHP/1С
(227 видео, 83 книги) — SQL/БД
(114 видео, 77 книги) — Сисадмин
(107 видео, 43 книги) — BA/SA
(181 видео, 32 книги) — Go/Rust
(167 видео, 43 книги) — Kotlin/Swift
(112 видео, 24 книги) — Flutter
(113 видео, 82 книги) — GameDev
(183 видео, 37 книги) — Дизайн
(136 видео, 33 книги) — PM/HR
Скачивать ничего не нужно — все выложили в Telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
Использование Proxy для валидации объектов
🖥 JavaScript test // чат
Proxy позволяет перехватывать и изменять операции над объектом, в данном случае используется для валидации значений.Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🧩Что будет на выходе?
function Animal() {}
function Dog() {}
Dog.prototype = Object.create(Animal.prototype);
const rover = new Dog();
console.log(rover.constructor === Animal);
console.log(rover.constructor === Dog);
console.log(Dog.prototype.isPrototypeOf(rover));
console.log(Animal.prototype.isPrototypeOf(rover));
Ответ:true, false, true, true
🖥 JavaScript test // чат
function Animal() {}
function Dog() {}
Dog.prototype = Object.create(Animal.prototype);
const rover = new Dog();
console.log(rover.constructor === Animal);
console.log(rover.constructor === Dog);
console.log(Dog.prototype.isPrototypeOf(rover));
console.log(Animal.prototype.isPrototypeOf(rover));
Ответ:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1