Когда-то он был “про view”. Теперь — серверные компоненты, Suspense, компилятор, серверные экшены. Это уже не инструмент, а целая среда. React стал фреймворком.
Только делает вид, что нет.
#code_battle
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔7😁4
Два инструмента, одна цель — чистый и красивый код. Но подходы — кардинально разные
— Проверенный временем стандарт
— Тысячи плагинов и правил
— Гибкая конфигурация на JS/TS
— Работает в любой экосистеме
— Новый формат линтинга и форматирования «в одном»
— Написан на Rust — летает даже в монорепах
— Умное кеширование и мгновенный запуск
— Простая миграция с ESLint + Prettier
Голосуем реакциями:
👍 — ESLint
❤️ — Biome
#code_battle
Please open Telegram to view this post
VIEW IN TELEGRAM
❤35👍17
🧩 Задача на область видимости
При запуске кода в консоли —
❓ Почему, если ветка `if (false)` даже не выполняется:
❤️ — Переменная
🔥 —
⚡️ — Ошибка синтаксиса при объявлении
🐸 Библиотека фронтендера
#code_challenge #js
При запуске кода в консоли —
ReferenceError
.❤️ — Переменная
a
находится во временной мёртвой зоне (TDZ)🔥 —
let
внутри блока не создаёт TDZ⚡️ — Ошибка синтаксиса при объявлении
#code_challenge #js
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13⚡4🔥2
Раннее мы выкладывали задачу
Правильный ответ:
JS делит выполнение на две фазы:
1. Инициализация (создание окружения) — компилятор видит
let a = 2
внутри функции и создаёт для неё локальную переменную a
.2. Выполнение — когда доходит до
console.log(a)
, движок уже знает о локальной a
, но она ещё не инициализирована.⚠️ Поэтому обращение к ней до строки
let a = 2
вызывает ReferenceError, даже если код в if
не выполнится.#code_challenge #js
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤5👍1
Кажется, вот он — новый порядок, чистый код, свежий старт. А потом снова файл на 600 строк и состояние, которое живёт своей жизнью. И вы ловите дежавю.
🔥 — Выбрали новый фреймворк
❤️ — Переписали старый проект с нормальной архитектурой
#code_battle
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12🔥3
Когда принципы сталкиваются с дедлайнами — рождается архитектурный холивар.
— Чёткие слои и зависимости
— Контракты, интерфейсы, unit-тесты
— Легко масштабировать и поддерживать
— Меньше слоёв, больше пользы
— Фокус на фичах, а не абстракциях
— Решения под задачу, а не под учебник
Голосуем реакциями:
👍 — Clean Architecture
❤️ — Pragmatic Architecture
#code_battle
Please open Telegram to view this post
VIEW IN TELEGRAM
❤26👍13🤔1
Что выведет этот код и почему
Подумайте, в каком порядке выполняются присваивания и как JS обрабатывает ссылки на объекты. Это частый вопрос на собесах, где проверяют понимание порядка вычисления выражений и поведения ссылок.
#code_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔8🥰3👍2
Ранее мы выкладывали задачу для джуна+.
Сегодня разберем, что происходит в этом коде и как работают присваивания и ссылки на объекты в JavaScript.
1. let a = { n: 1 }; — создаём объект { n: 1 } и присваиваем его переменной a.
2. let b = a; — b теперь ссылается на тот же объект, что и a.
3. a.x = a = { n: 2 }; —
• Присваиваем новому объекту { n: 2 } переменную a.
• После этого свойству x объекта { n: 2 } присваиваем сам объект { n: 2 }.
4. console.log(a.x); — выводит undefined, так как свойство x в новом объекте { n: 2 } не было установлено.
5. console.log(b.x); — выводит объект { n: 2 }, потому что b ссылается на старый объект { n: 1 }, который теперь имеет свойство x, указывающее на { n: 2 }.
• b.x — { n: 2 }
#code_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4😢3