🧩 Задача на область видимости
При запуске кода в консоли —
❓ Почему, если ветка `if (false)` даже не выполняется:
❤️ — Переменная
🔥 —
⚡️ — Ошибка синтаксиса при объявлении
🐸 Библиотека фронтендера
#code_challenge #js
При запуске кода в консоли —
ReferenceError.❤️ — Переменная
a находится во временной мёртвой зоне (TDZ)🔥 —
let внутри блока не создаёт TDZ⚡️ — Ошибка синтаксиса при объявлении
#code_challenge #js
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14⚡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
🔥7❤6👍2
Кажется, вот он — новый порядок, чистый код, свежий старт. А потом снова файл на 600 строк и состояние, которое живёт своей жизнью. И вы ловите дежавю.
🔥 — Выбрали новый фреймворк
❤️ — Переписали старый проект с нормальной архитектурой
#code_battle
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14🔥3
Когда принципы сталкиваются с дедлайнами — рождается архитектурный холивар.
— Чёткие слои и зависимости
— Контракты, интерфейсы, unit-тесты
— Легко масштабировать и поддерживать
— Меньше слоёв, больше пользы
— Фокус на фичах, а не абстракциях
— Решения под задачу, а не под учебник
Голосуем реакциями:
👍 — Clean Architecture
❤️ — Pragmatic Architecture
#code_battle
Please open Telegram to view this post
VIEW IN TELEGRAM
❤26👍15🤔2
Что выведет этот код и почему
Подумайте, в каком порядке выполняются присваивания и как JS обрабатывает ссылки на объекты. Это частый вопрос на собесах, где проверяют понимание порядка вычисления выражений и поведения ссылок.
#code_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔9🥰3👍2🌚1
Ранее мы выкладывали задачу для джуна+.
Сегодня разберем, что происходит в этом коде и как работают присваивания и ссылки на объекты в 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😢4
🕹 npm install: хитрость фронтендера
Каждый сталкивался с дилеммой: проверять всё или просто вставить команду и надеяться, что заработает?
➕ Проверяем пакет перед установкой
➕ Копируем команду из StackOverflow и надеемся, что заработает
Голосуем реакциями:
👍 — Осторожность
❤️ — Копипаст
🐸 Библиотека фронтендера
#code_battle
Каждый сталкивался с дилеммой: проверять всё или просто вставить команду и надеяться, что заработает?
Голосуем реакциями:
👍 — Осторожность
❤️ — Копипаст
#code_battle
Please open Telegram to view this post
VIEW IN TELEGRAM
❤25👍15
Когда ответственность встречается с делегированием — рождается главный миф разработки.
— Баги находятся на этапе разработки
— Быстрый feedback loop
— Рефакторинг без страха
— Разработчик = ответственность за качество
— Быстрее пишу код без тестов
— QA всё равно найдёт баги
— "Я же не тестировщик"
— Баги уходят в прод, но это не моя вина
Голосуем реакциями:
👍 — Пишу unit-тесты перед коммитом
❤️ — Тесты есть, но не всегда
🤔 — QA справится, они для этого есть
🔥 — Продакшн и есть тестовая среда
#code_battle
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥9🤔8❤4🥰1
Что вернёт код на картинке выше
Массив вроде есть, но что хранится в array[0]…
#code_battle
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱11🥰5👍1
Пять лет на React — и вдруг понял, что жизнь без useEffect реально возможна. Ниже — коротко, в чём именно разница
const [count, setCount] = useState(0)
setCount(count + 1)
const count = ref(0)
count.value++
Просто работаешь с переменной — и всё обновляется. Никаких setState, никаких магических зависимостей.
const filtered = useMemo(() => items.filter(i => i.active), [items])
const filtered = computed(() => items.value.filter(i => i.active))
Во Vue не нужно думать про зависимости — оно само знает, когда пересчитать значение.
<div v-for="item in items" :key="item.id"> читается легче, чем {items.map(item => <div>...)}. v-if, v-show, v-model — три директивы, которые убирают сотни строк boilerplate.
useEffect(() => {
if (email && !isValidEmail(email)) setError(‘Invalid’)
else setError(’’)
}, [email])
const email = ref(’’)
const error = computed(() => email.value && !isValidEmail(email.value) ? ‘Invalid’ : ‘’)
Что реально зацепило:
1. Нет useEffect hell — watch и watchEffect проще и читаемее.
2. v-model — двустороннее связывание без боли и бойлерплейта.
3. Меньше бандл: React + ReactDOM ≈ 45 KB (gzip), Vue 3 ≈ 34 KB (gzip).
Что не зашло:
— Экосистема меньше
— TypeScript-интеграция всё ещё местами шероховата
На работе продолжаю React (экосистема, команда, легаси). Но когда сажусь за свой проект в выходные — открываю Vue.
#code_battle
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17🌚4🥰2👏1🎉1
После того случая я перестал спорить с TypeScript. Решил внедрить его хотя бы частично — просто чтобы понять, действительно ли он чего-то стоит. И вот тут началось самое интересное.
function calcTotal(price) {
return price + 2000
}
calcTotal("4000") // "40002000»
На проде чек вырос в два раза, клиент — в гневе. А я — с новыми седыми волосами.
С TypeScript такого бы не случилось:
function calcTotal(price: number) {
return price + 2000
}
// Argument of type 'string' is not assignable to parameter of type 'number’
После этого я посмотрел на TS по-другому. Он не просто проверяет типы — он ловит ошибки до того, как они становятся проблемами.
Поначалу раздражает:
«Зачем всё это?»
«Слишком строго!»
«Лишний бойлерплейт!»
А потом замечаешь: автодополнение стало умнее, рефакторинг — безопаснее, новые разработчики быстрее разбираются в коде.
#code_battle
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰6❤1👍1🔥1