Обложка канала

Frontender's notes

Годные заметки, новости, видео и интересные статьи для Frontend разработчиков.

Frontender's notes

4 года назад
Открыть в
Hoisting, один из самых часто задаваемых вопросах на собесах Постараюсь объяснить как можно проще. И так что это: Hoisting - означает, что объявления переменных и функций перемещаются вверх их области видимости перед выполнением кода. Например: console.log(dog); // undefined var dog = “Bobik”; 1. Мы объявляем переменную dog и присвоили ей значение “Bobik” сразу после того, как попытались вывести ее в консоле. Результат - undefined. Почему undefined а не ошибка в консоли? 👉 При инициализации переменная перемещается вверх, но значение еще не присвоено и поэтому движок автоматически присваивает undefined 👉 Выполняется console.log(dog) 👉 Присваивается значение переменной Это можно было бы написать примерно так: var dog = undefined; console.log(dog); // undefined dog = “Bobik”; C let и const есть нюансы Объявленные переменные с помощью ключевого слова let или const, поднимается так же, как и в случае с var, но они не инициализируются движком javascript с помощью undefined и выдадут ошибку ReferenceError. Функции: Точно так же, как и с переменными, объявление функции с помощью function declaration поднимается на этапе создания глобального контекста, а вот при использовании function expression - вы получите сообщение об ошибке.