Например,
let и const используются для корректного объявления переменных, map и forEach — для обработки массивов, а includes и split помогают при работе со строками.На картинке — базовые конструкции языка и самые часто используемые методы, которые стоит держать под рукой.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍9❤7
Выполнение опциональных колбэков!
Очень частая ситуация: колбэк может быть передан, а может и нет.
Обычно код обрастает проверками:
В современном JS это решается одной операцией -
То же самое работает с аргументами и вложенными объектами:
Если функции нет - ничего не происходит, без ошибок и лишнего кода.
Особенно хорошо читается в
🔥
📣 JS Ready | #совет
Очень частая ситуация: колбэк может быть передан, а может и нет.
Обычно код обрастает проверками:
if (typeof onClose === 'function') {
onClose();
}В современном JS это решается одной операцией -
optional chaining для вызова функций:onClose?.();
То же самое работает с аргументами и вложенными объектами:
options.onError?.(err);
Если функции нет - ничего не происходит, без ошибок и лишнего кода.
Особенно хорошо читается в
UI, хендлерах и SDK:props.onSubmit?.(data);
?.() - короткий и безопасный способ вызывать опциональные функции без проверок.Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍8🔥7
This media is not supported in your browser
VIEW IN TELEGRAM
Здесь собраны статьи и материалы программиста, который сыграл огромную роль в развитии JS и придумал JSON. Крокфорд объясняет, где в JS сильные стороны, где опасные места и какие подходы реально работают в долгосрочной перспективе. Это хороший ресурс, если ты уже знаешь основы и хочешь лучше понять логику его дизайна и то, как писать более надёжный и понятный код.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍7🤝7
Шпаргалка по модульной системе, посвящённая организации и загрузке кода в современных приложениях. Описываются принципы работы модулей, различия между декларативной и динамической загрузкой, а также особенности инициализации зависимостей и управления модульным графом во время выполнения.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍7🤝7
В этой статье:
• Использование библиотеки grammY для работы с Telegram‑ботом;
• Конфигурация проекта;
• Как настроить клавиатуры, context‑объект и обработку ошибок;
• Инструкция по деплою бота на сервер; 🔊 Продолжай читать на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥8❤7
Итерация по объекту как по массиву пар с Object.entries()!
Если нужны только собственные enumerable строковые ключи — удобнее сразу использовать
Распространённый кейс — валидации перед запуском бизнес-логики (например, запретить undefined в значениях):
Map оправдан, когда нужны частые
Нормализация объекта в массив DTO для API или записи в БД:
🔥 Такой подход делает обработку объекта структурной и удобной для масштабирования логики.
📣 JS Ready | #практика
for...in перебирает enumerable строковые ключи, включая унаследованные — такие итерации требуют фильтрации через Object.hasOwn() или hasOwnProperty(). Если нужны только собственные enumerable строковые ключи — удобнее сразу использовать
Object.entries().Object.entries() возвращает пары own enumerable string-keyed свойств (без Symbol, без non-enumerable):const user = {
name: "Alex",
age: 30,
role: "developer"
};
for (const [key, value] of Object.entries(user)) {
console.log(`${key}: ${value}`);
}Распространённый кейс — валидации перед запуском бизнес-логики (например, запретить undefined в значениях):
Object.entries(user).forEach(([k, v]) => {
if (v === undefined) {
throw new Error(`Значение "${k}" не должно быть undefined`);
}
});Map оправдан, когда нужны частые
set/delete, map.size, не-строковые ключи или словарная структура без ограничений объекта:const userMap = new Map(Object.entries(user));
console.log(userMap.get("role"));
Нормализация объекта в массив DTO для API или записи в БД:
const dto = Object.entries(user).map(([field, value]) => ({
field,
value,
updatedAt: new Date().toISOString()
}));
console.log(dto);Please open Telegram to view this post
VIEW IN TELEGRAM
1👍12🤝7🔥6❤1
Если кто не знает, Git — это система контроля версий, которая помогает отслеживать историю изменений в файлах.
Например с помощью команды
git pull, можно загружать удаленные репозитории к себе на ПК, чтобы вести разработку локально, не затрагивая продуктовую или dev ветку. Сохрани в избранное, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🤝8🔥7❤3
❤10👍9🔥6🤝3
Например,
Function Declaration поддерживает hoisting и доступна до места объявления, а Arrow Function предоставляет более компактный синтаксис и иной механизм работы с контекстом this.На картинке — 4 основных способа объявления функций в JavaScript, которые необходимо уверенно понимать и применять в повседневной разработке.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15🤝12👍10
Когда зависимости создаются внутри функций и классов, код становится сложно тестировать, расширять и переиспользовать.
В этом посте:
• Разберём, в чём проблема жёстких зависимостей;
• Покажем базовый DI без классов и контейнеров;
• Научимся подменять реализации без переписывания кода;
• Построим простую, но гибкую схему внедрения зависимостей.
Dependency Injection переносит точку изменения из тела функции в место её создания, позволяя управлять поведением системы без переписывания логики.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍9❤8🤝5
Проверяем наличие свойства!
Очень часто нужно проверить, есть ли поле именно в объекте, а не где-то в прототипе. Многие пишут так:
Но
Другой классический вариант -
Особенно если объект создан через
Правильный и нативный способ
Он работает корректно независимо от прототипа.
Очень хорошо ложится на проверки данных, API-ответы и конфиги:
🔥
📣 JS Ready | #совет
Очень часто нужно проверить, есть ли поле именно в объекте, а не где-то в прототипе. Многие пишут так:
'id' in data;
Но
in возвращает true, даже если свойство прилетело из прототипа.Другой классический вариант -
obj.hasOwnProperty, но он небезопасен:data.hasOwnProperty('id'); // может не существоватьОсобенно если объект создан через
Object.create(null) или поле переопределено.Правильный и нативный способ
Object.hasOwn:Object.hasOwn(data, 'id');
Он работает корректно независимо от прототипа.
Очень хорошо ложится на проверки данных, API-ответы и конфиги:
if (Object.hasOwn(config, 'timeout')) {
applyTimeout(config.timeout);
}Object.hasOwn — отличный способ проверить наличие свойства в объекте, не задевая прототип.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍12🤝9❤2