Понимание контекста подъема и выполнения в JavaScript с одним из самых забавных ситкомов

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

Давайте сегодня обсудим одну из основных концепций JavaScript в интервью между старшим разработчиком Рэймондом Холтом и начинающим программистом Джейком Перальтой, ищущим стажировку в стартапе Холта — ? Конечно, вы угадали, B99!

Раймонд Холт: Приветствую, Перальта, я вижу, что ваше резюме соответствует действительности. У меня есть вся необходимая информация. Я вижу, вы упомянули опыт работы с JavaScript. Позвольте мне задать вам быстрый вопрос, чтобы проверить ваши знания. Что выведет этот код, Перальта?

Джейк: Бинг Пот! В журнале консоли мы сначала получим «Hello world», а затем 7.

Раймонд Холт: Хорошо, как насчет этого?

Джейк:Нет! Это будет «Hello world», а затем «undefined».

Раймонд Холт: Не могли бы вы подробно объяснить, как это происходит за кулисами?

Джейк:Хорошо, круто, круто, круто, круто, круто, круто

Раймонд Холт: Ты нервничаешь, Перальта?

Джейк: Нет, капитан, я рассказчик. Это мое ремесло! Здесь я придумываю лучшее объяснение.

За кулисами есть этот контейнер под названием «Контекст выполнения». Он состоит из двух компонентов —

  • Компонент памяти
  • Компонент кода

Раймонд Холт: Дайте мне технические условия для этих компонентов Peralta!

Джейк : Эй, капитан!

Раймонд Холд: Да, Перальта. Не используйте «Я». Продолжать !

Джейк: Да, капитан! Компонент памяти — это не что иное, как переменная среда, а компонент кода — это не что иное, как поток выполнения.

Поскольку JavaScript является синхронным однопоточным языком, он выполняет каждый код построчно в компоненте кода.

Все переменные и функции зарезервированы в памяти еще до выполнения кода.

В случае с переменными они сохраняются в памяти как значение undefined. «undefined» выступает здесь как заполнитель. В то время как в случае функций вся копия функции хранится в памяти.

Во втором примере память

var x = undefined 
function getHello(){
   console.log("Hello world");
} 

уже присутствует в памяти.

Итак, в потоке выполнения, то есть в компоненте кода,

  • Первая строка кода выполняется успешно, так как функция уже присутствует в памяти.
  • Вторая строка выполняется, но поскольку в памяти хранится значение x, хранящееся как неопределенное, в консоли выводится «неопределенное».

Кроме того, если я использую функцию стрелки, например,

 var getHello = () => {
      console.log("Hello world")
}

Будет напечатано сообщение об ошибке «Неперехваченная ссылка», поскольку функция здесь хранится как переменная, которая не определена.

Раймонд Холт: верно

Джейк: Да! Я сказал несколько правильных вещей подряд! Noiceeee

Раймонд Холт: Пожалуйста, воздержитесь от использования этих слов Перальта. Последний вопрос, и мы можем закончить дискуссию. Что не определено? Это то же самое, что не определено?

Джейк: Умный вопрос! Нет, они совсем не одинаковые! Undefined выступает в качестве заполнителя для переменной, которая была где-то объявлена ​​в коде. Не определено означает, что переменная нигде не упоминается в коде.

Пример ,

Здесь код выдает ошибку «Uncaught ReferenceError: x не определен».

Раймонд Холт:Чисто! Хорошее объяснение Перальта!

Джейк:Спасибо, папа! Эмм спасибо капитан!

Раймонд Холт: я поручу вам проект с Сантьяго, надеюсь, вы не возражаете!

Джейк : Неееет!

Не доктор ssh , Фремулон

Подробнее о подъеме —

Свяжитесь со мной на LinkedIn: Дивья Рао | LinkedIn

Подпишитесь на меня в Твиттере: Дивья Рао (@dailydevDivya) / Twitter

Если этот пост был полезен, пожалуйста, несколько раз нажмите кнопку аплодисментов 👏, чтобы выразить свою поддержку автору 👇

🚀Разработчики: учитесь и развивайтесь, не отставая от того, что важно, ПРИСОЕДИНЯЙТЕСЬ К FAUN.