Уроки Javascript #3. Поднятие переменных и объявлений функций (Hoisting).

Sdílet
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

Komentáře • 45

  • @uvwzyx
    @uvwzyx Před rokem +11

    "Поднятие (hoisting) - термин, который вы не встретите в документации JavaScript. Поднятие задумывалось как общий способ мышления о том, как контекст исполнения (в частности, фазы создания и исполнения) работает в JavaScript. Однако, hoisting может привести и к недоразумениям. Например, hoisting учит, что объявление переменной или функции физически перемещается в начало вашего кода, хотя в действительности этого не происходит. На самом же деле, объявления переменных и функций попадают в память в процессе фазы компиляции, но остаются в коде на том месте, где вы их объявили."

  • @bukanaka
    @bukanaka Před 3 lety +40

    Есть такой язык программирования и называется он JavaScript for Sobesedivanija

    • @stackdev
      @stackdev  Před 3 lety +2

      Это точно:)

    • @andTutin
      @andTutin Před rokem

      нет, есть погромисты, которые основ не желают знать

    • @user-cu2ng7gf4k
      @user-cu2ng7gf4k Před rokem

      @@andTutin как это все удержать в голове? Не понимаю

    • @dejadejugar
      @dejadejugar Před 11 měsíci +3

      ​@@user-cu2ng7gf4k Со временем понимание само собой придет, большую часть информации что ты выучил на первых парах использовать банально негде, чем больше практикуешь написание кода тем более становится заметна нужда в специфических(в первое время) конструкций и правил).
      Люди верно подмечают что большая часть современного самообучения языку это в большей степени зубрежка не самого языка(в общем плане) а тем нужных для прохождения собеседований.
      Больше практики даже с мелочами исправит это непонятное непонимание))

  • @Nikitosss91
    @Nikitosss91 Před 3 lety +9

    ля, ты очень круто объясняешь, просто мое почтение

  • @user-ul3ri8mz2k
    @user-ul3ri8mz2k Před rokem +1

    Спасибо, за понятную и простую подачу материала!

  • @hilarion_aggey
    @hilarion_aggey Před 2 lety +2

    Присоединяюсь к предыдущим комментариям. Всё чётко, просто и понятно))

  • @Zubairavvv
    @Zubairavvv Před 2 lety +5

    Спасибо, быстро и понятно!

  • @TeomunMete
    @TeomunMete Před 5 měsíci +1

    Кротка и конкретно

  • @taras7844
    @taras7844 Před 3 lety +3

    Спасибо)

  • @user-vk6wk8bs5m
    @user-vk6wk8bs5m Před 2 lety +4

    Хорошие уроки и правильный подход к выстраиванию и подаче материала. Спасибо)

  • @gritsienkooleg3447
    @gritsienkooleg3447 Před 2 lety +1

    Какое приятное и понятное объяснение!!! Спасибо

  • @alexanderkorotkoff2639
    @alexanderkorotkoff2639 Před 2 lety +1

    Спасибо

  • @vladimirpuzey713
    @vladimirpuzey713 Před 2 lety +3

    Именно это видео хотел найти! Спасибо!

  • @user-vg9fn4go4e
    @user-vg9fn4go4e Před rokem +1

    Спасибо за уроки! Всё очень понятно разъясняете! Всё по полочкам!

  • @tipitip3878
    @tipitip3878 Před 3 lety +1

    боженька!

  • @piypiy_n
    @piypiy_n Před 5 měsíci +1

    у вас понятные динамичные уроки! Лайк

  • @user-cd1sr5sx2r
    @user-cd1sr5sx2r Před 3 lety +3

    Хорошее и полезное видео. А где это используется? На собеседовании...

    • @stackdev
      @stackdev  Před 3 lety

      :) так систематически случается

  • @muzaffaryunusov7032
    @muzaffaryunusov7032 Před 3 lety +1

    я только одно не понял: зачем нужен вар если есть конст и лет

    • @stackdev
      @stackdev  Před 3 lety

      Это - теория, которую спрашивают на интервью постоянно..

    • @andTutin
      @andTutin Před rokem

      1) вар был всегда 2) вар не накладывает на движок расходов на обслуживание мертвых зон , блоков , проверок и прочее, другими словами может быть выгоден

    • @user-yi8bz1hr2c
      @user-yi8bz1hr2c Před 4 měsíci

      Раньше их не было const let

    • @user-yi8bz1hr2c
      @user-yi8bz1hr2c Před 4 měsíci

      Var нету область видимости если мы открываем его блок скопа он поднимается на hosting

  • @anafro_ru
    @anafro_ru Před rokem +1

    Василий, здравствуйте! Спасибо за ваш ролик! У меня есть вопрос!
    Вот код:
    // -------------------
    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

  • @catsapp
    @catsapp Před rokem +3

    Я тут почитал Кайла Симпсона. И для себя придумал такое объяснение, может кому-то тоже будет интересно. Мало где говорится (либо вскользь) , что js имеет две фазы. 1) Компиляция и 2) Выполнение. Так вот поднятие переменных ( и функций) происходит в первой фазе компиляции. Что это значит? Это значит движок переписывает ваш код, вырезает переменные в середине кода или в конце и перезаписывает объявление переменной в начало кода. Объясняю это, поскольку сам термин поднятие может сбить столку. Поднятие -- это перезапись переменных в начало кода! Причем,там, если правильно помню, поднимаются сначала функции, а затем переменные.

  • @frankshepherd5953
    @frankshepherd5953 Před 9 měsíci

    А если уже прописать в объявление переменной let years то получим ошибку Uncaught ReferenceError: Cannot access 'years' before initialization

  • @jackson8460
    @jackson8460 Před 6 měsíci +1

    Вы правда считаете что это для начинающих?

  • @yanbraverman2203
    @yanbraverman2203 Před 2 lety +1

    Использовать var в 2021 году это нонсенс. Было бы не плохо объяснить как всплывает let.

    • @catsapp
      @catsapp Před rokem +1

      Думаю let также всплывает, но только в своей области видимости ( в блоке), иначе говоря, если Лет внутри функции объявляется в конце, он всплывет в начало тела функции, но его не будет в глобальной области видимости виндоу

    • @andTutin
      @andTutin Před rokem

      @@catsapp всплывает, но находится в так называемой временной мертвой зоне, пока не присвоится значение

    • @catsapp
      @catsapp Před rokem

      @@andTutin а нуда. Андерфайнд?

    • @andTutin
      @andTutin Před rokem

      @@catsapp error

  • @happyman1696
    @happyman1696 Před 15 dny

    это очень слабый урок получился, даже ошибку не поправили вначале)) просто удалили, а ошибка оч популярная