IT-ХОЗЯЕВА
580 subscribers
62 photos
5 videos
53 links
Канал сообщества boosty.to/jointime
Download Telegram
IT-X: Legends | Сергей Кустиков @eightbitjs

Серёга — тот, кто в алгоритмах и React собаку съел. Такой уровень понимания жабаскрипта, что даже Деми Мурыч бы позавидовал.

• Лидирует беседу с Алгоритмами
• Помог куче людей по вопросам кишков JS
• React от бога. Разбирается в реакте так, будто он его придумал

Также ведет очень крутой канальчик по JS, предлагаю чекнуть. И заглядывайте в беседу с алгосами 🐱
Подписаться на гуру → @eightbitjs
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥158👍3👏1
🔥 Подойдет даже тем, кто не вкатывается в DS

Подписывайся на телеграмм канал IT-ХОЗЯЕВА, учавствуй в розыгрыше и забирай книжку 😎
Уже есть книга? Без проблем — заменим!

"Математика для DS"

Участников: 332
Призовых мест: 1
Дата розыгрыша: 20:03, 02.09.2025 MSK (завершён)

Победители розыгрыша:
1. fj - 3shqum
🔥2012❤‍🔥9
❤‍🔥19🔥65👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Вспомнил тут про сварочное дело и решил проверить свои навыки.

Предварительный вердикт: в целом получается ✔️

Если есть тут коллеги ответственные за охрану труда - мне очень стыдно.
Не соблюдал правила безопасности, варил без спецовки и получил ожоги от излучения сварочной дуги ❗️

З.Ы. На фоне - сестренка, исполняет лунную походку )
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥87❤‍🔥3
IT-ХОЗЯЕВА pinned «🔥 Подойдет даже тем, кто не вкатывается в DS Подписывайся на телеграмм канал IT-ХОЗЯЕВА, учавствуй в розыгрыше и забирай книжку 😎 Уже есть книга? Без проблем — заменим! "Математика для DS" Участников: 332 Призовых мест: 1 Дата розыгрыша: 20:03, 02.09.2025…»
🧊 siberiacancode x IT-ХОЗЯЕВА
🍿 начинаем эксперимент youtube — twitch — vk
Хасана сейчас будет Дима собесить. Залетаем, будет очень интересно 💪
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9❤‍🔥2👍1
Forwarded from 8BitJS
​​Hoisting в JavaScript: миф о «поднятии» или реальная механика движка

Как часто на собеседованиях вам задавали классический вопрос: «Что такое hoisting?»

Не растерявшись, мы обычно отвечаем: «Это поднятие переменных и функций наверх их области видимости». Интервьюер одобрительно кивает, и мы идём дальше.

Но действительно ли движок переписывает код и «перемещает» объявления? На самом деле это лишь метафора, упрощающая объяснение, но не отражающая реальную механику. В этой статье разберём, что говорит об этом спецификация ECMAScript и как это реализовано во внутренностях V8.

Если открыть учебники и статьи, почти всегда можно встретить объяснение в стиле: «JavaScript поднимает объявление переменной или функции в начало области видимости». Пример из таких источников:

function foo() {
console.log('1:', a)
a = 42
console.log('2:', a)
var a
}

// 1: undefined
// 2: 42


Затем идёт иллюстрация «как будто движок переписал код» и добавил объявление в начало:

function scope() {
var a // hoisting
console.log('1:', a)
a = 42
console.log('2:', a)
}


TL;DR

Сегодня разберём:

- Hoisting — это не перенос строк кода, а ранняя регистрация привязок до исполнения.
- var создаётся в контексте и инициализируется undefined.
- let/const регистрируются, но попадают в TDZ (Temporal Dead Zone) до инициализации (ранний доступ → ReferenceError).
- Function Declarations поднимаются в виде готовых функций (их можно вызывать до места объявления).
- В V8 это реализовано через вызов Runtime::kDeclareGlobals и видно по инструкциям байткода (LdaTheHole, ThrowReferenceErrorIfHole).

---

Концептуальный разбор процессов

JS‑движок выполняет код в две стадии:

Creation Phase

Фаза создания Execution Context. Иногда её называют Memory Creation Phase или Compile Phase. Во время этой фазы:

- создаются Execution ContextVariable Environment и Lexical Environment;

- для var создаются mutable bindings и сразу инициализируются undefined;

- для let/const создаются bindings, но они остаются неинициализированными (значение the‑hole, TDZ);

- Function Declarations получают готовый объект функции.

Execution Phase

Фаза построчного выполнения кода.

Важно: термины фаз — это лишь распространённые формулировки. В спецификации описаны алгоритмы вроде FunctionDeclarationInstantiation и операции с Environment Records (CreateMutableBinding, InitializeBindingCreateImmutableBinding и т.д.).

Примеры кода и байткод V8

Ниже рассмотрим, как это выглядит в байткоде.

Важно: в байткоде вы не всегда увидите явное LdaUndefined для var. Ignition при создании кадра (frame) заранее заполняет регистры и слоты значением undefined.

var

Пример:

function demoVar() {
console.log(a) // [1]
var a = 10 // [2]
console.log(a) // [3]
}


Байткод функции (индексы слотов опущены для простоты):

[generated bytecode for function: demoVar]
@0 : LdaGlobal [0]
@3 : Star2
@4 : GetNamedProperty r2, [1]
@8 : Star1
@9 : CallProperty1 r1, r2, r0
@14 : LdaSmi [10]
@16 : Star0
@17 : LdaGlobal [0]
@20 : Star2
@21 : GetNamedProperty r2, [1]
@25 : Star1
@26 : CallProperty1 r1, r2, r0
@31 : LdaUndefined
@32 : Return

Constant pool:
0: <String[7]: #console>
1: <String[3]: #log>


Разбор:

@0 LdaGlobal [0] — загрузить из constant pool console.

@3 Star2 — сохранить в регистр r2.

@4 GetNamedProperty r2, [1] — получить свойство log. acc = console.log

@8 Star1 — сохранить функцию в r1.

@9 CallProperty1 r1, r2, r0 — вызвать console.log(a). В регистре r1 мы храним функцию console.log, а в r2 reciever console (аналог this для вызова). Так как регистр r0 (переменная a) ещё не инициализирован в теле, он равен undefined.

@14 LdaSmi [10] — загрузить число 10 в аккумулятор

@16 Star0 — сохранить в r0, инициализация a = 10.

@17…@26 — повторный вызов console.log(a), теперь r0 = 10.

@31 LdaUndefined — подготовка значения возврата по умолчанию.

@32 Return — возврат из функции.

To be continue...

---
#JavaScript #Hoisting #V8 #ExecutionContext #TDZ #TemporalDeadZone #Interview #8BitJS
6❤‍🔥11👍52🔥2
🔥 Большущие дяди мальчики на месте?

Подписывайся на телеграм канал IT-ХОЗЯЕВА, учавствуй в розыгрыше и забирай книжку 💪

Участников: 206
Призовых мест: 1
Дата розыгрыша: 12:13, 18.09.2025 MSK (завершён)

Победители розыгрыша:
1. Александр - 3tr4hd
10🔥6❤‍🔥4👎1
Вчера наше дружное сообщество ездило в приют "Домашний", который находится в Балашихе! 100 килограммов собачьего стаффа было закуплено. Я горд, что у нас такое крепкое и дружное сообщество. Спасибо всем, кто закидывал деньги! Скоро дропну ролик-отчет 🐶

IT-ХОЗЯЕВА — мы лучшие! Будем дальше делать добро 🦮
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
327🔥9❤‍🔥5
Я поражаюсь сообществу IT-ХОЗЯЕВА 😎

Я знаю много сообществ, но сколько же просто жестких людей в нашем сообществе, спикеры, менторы, разработчики, руководы. Это не самое большое сообщество, но точно процент качества и инженерной экспертизы топ один. Также мне нравится, что основной посыл это знания и спорт.

Сильнейшее сообщество, а я и дальше буду закрывать медийный и опенсорсный гештальт 🏆
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥86👍4🤡2❤‍🔥1
Forwarded from Khasan
This media is not supported in your browser
VIEW IN TELEGRAM
Хозяйский слипер билд 🦾

Спортивный чатик даёт
+50 к тестостерону
и +70 к мотивации

Начал регулярно тренить как пришел в комьюнити ⚡️
Прошло 6 мес.
Пока ачивка - слипер билд

UPDATE:
пошел листать галерею и смотреть что было за эти пол года. Прям настальгии немного словил )
🔥133❤‍🔥1
Khasan
Хозяйский слипер билд 🦾 Спортивный чатик даёт +50 к тестостерону и +70 к мотивации Начал регулярно тренить как пришел в комьюнити ⚡️ Прошло 6 мес. Пока ачивка - слипер билд UPDATE: пошел листать галерею и смотреть что было за эти пол года. Прям настальгии…
Вообще, больше всего я мотивируюсь ребятами из спортивного чата! У нас сейчас там проходят разные спортивные челленджи, в которых может участвовать абсолютно каждый. Давайте развеем миф, что все айтишники — слабаки и зашуганные. У нас всё по-другому!

Мы тебя ждём 💪
❤‍🔥14🔥73🤗2💯1