Уроки Javascript #3. Поднятие переменных и объявлений функций (Hoisting).
Vložit
- čas přidán 28. 02. 2021
- Мой Telegram: t.me/stackdevru
В этом видео мы разберемся, что такое и как работает поднятие (Hoisting), применительно к объявлениям переменных с помощью VAR и объявлениям функций в Javascript.
Поднятие или hoisting - это механизм в JavaScript, в котором переменные и объявления функций, передвигаются вверх своей области видимости перед тем, как код будет выполнен.
Мои Курсы:
Gatsby JS (полный курс): gatsbyjs.ru
React для начинающих: react001.ru
Все мои курсы (+ исходные файлы): stackdev.ru
Подписывайся на соц сети:
Telegram: t.me/stackdevru
VK: vasilymur
Instagram: / vm_online
Мой блог о веб-разработке: stackdev.blog
"Поднятие (hoisting) - термин, который вы не встретите в документации JavaScript. Поднятие задумывалось как общий способ мышления о том, как контекст исполнения (в частности, фазы создания и исполнения) работает в JavaScript. Однако, hoisting может привести и к недоразумениям. Например, hoisting учит, что объявление переменной или функции физически перемещается в начало вашего кода, хотя в действительности этого не происходит. На самом же деле, объявления переменных и функций попадают в память в процессе фазы компиляции, но остаются в коде на том месте, где вы их объявили."
Есть такой язык программирования и называется он JavaScript for Sobesedivanija
Это точно:)
нет, есть погромисты, которые основ не желают знать
@@andTutin как это все удержать в голове? Не понимаю
@@user-cu2ng7gf4k Со временем понимание само собой придет, большую часть информации что ты выучил на первых парах использовать банально негде, чем больше практикуешь написание кода тем более становится заметна нужда в специфических(в первое время) конструкций и правил).
Люди верно подмечают что большая часть современного самообучения языку это в большей степени зубрежка не самого языка(в общем плане) а тем нужных для прохождения собеседований.
Больше практики даже с мелочами исправит это непонятное непонимание))
ля, ты очень круто объясняешь, просто мое почтение
Спасибо!
Спасибо, за понятную и простую подачу материала!
Сапсибо!
Присоединяюсь к предыдущим комментариям. Всё чётко, просто и понятно))
Спасибо!
Спасибо, быстро и понятно!
Спасибо!
Кротка и конкретно
Спасибо)
Хорошие уроки и правильный подход к выстраиванию и подаче материала. Спасибо)
Спасибо!
Какое приятное и понятное объяснение!!! Спасибо
Спасибо
Именно это видео хотел найти! Спасибо!
Спасибо!
Спасибо за уроки! Всё очень понятно разъясняете! Всё по полочкам!
Спасибо!
боженька!
у вас понятные динамичные уроки! Лайк
Спасибо!
Хорошее и полезное видео. А где это используется? На собеседовании...
:) так систематически случается
я только одно не понял: зачем нужен вар если есть конст и лет
Это - теория, которую спрашивают на интервью постоянно..
1) вар был всегда 2) вар не накладывает на движок расходов на обслуживание мертвых зон , блоков , проверок и прочее, другими словами может быть выгоден
Раньше их не было const let
Var нету область видимости если мы открываем его блок скопа он поднимается на hosting
Василий, здравствуйте! Спасибо за ваш ролик! У меня есть вопрос!
Вот код:
// -------------------
a(20);
function a(integer) {
console.log(`Called a(${integer});`);
if(integer > 0) {
b(integer - 1);
}
}
function b(integer) {
console.log(`Called b(${integer});`);
if(integer > 0) {
a(integer - 1);
}
}
// -------------------
Функции А и Б вызывают друг друга до тех пор, пока аргумент не станет меньше нуля.
Сначала А вызывает Б. Функция А находится до функции Б, и по идее функция Б должна по свойству Hoisting подняться выше функции А.
Затем, функция Б вызывает функцию А. Но так как функция Б поднялась выше, то функция А находится по коду ниже, чем Б, поэтому функция А поднимается выше Б? Или как это происходит?)
Этот код работает как ожидается: выводятся числа от 20 до 1
Я тут почитал Кайла Симпсона. И для себя придумал такое объяснение, может кому-то тоже будет интересно. Мало где говорится (либо вскользь) , что js имеет две фазы. 1) Компиляция и 2) Выполнение. Так вот поднятие переменных ( и функций) происходит в первой фазе компиляции. Что это значит? Это значит движок переписывает ваш код, вырезает переменные в середине кода или в конце и перезаписывает объявление переменной в начало кода. Объясняю это, поскольку сам термин поднятие может сбить столку. Поднятие -- это перезапись переменных в начало кода! Причем,там, если правильно помню, поднимаются сначала функции, а затем переменные.
А если уже прописать в объявление переменной let years то получим ошибку Uncaught ReferenceError: Cannot access 'years' before initialization
Вы правда считаете что это для начинающих?
Использовать var в 2021 году это нонсенс. Было бы не плохо объяснить как всплывает let.
Думаю let также всплывает, но только в своей области видимости ( в блоке), иначе говоря, если Лет внутри функции объявляется в конце, он всплывет в начало тела функции, но его не будет в глобальной области видимости виндоу
@@catsapp всплывает, но находится в так называемой временной мертвой зоне, пока не присвоится значение
@@andTutin а нуда. Андерфайнд?
@@catsapp error
это очень слабый урок получился, даже ошибку не поправили вначале)) просто удалили, а ошибка оч популярная