Этот блог будет представлен в виде списка. Потому что всем нравятся листики; это научно доказано.
Я представлю 10 концепций, которые обычно обсуждаются на собеседованиях по JavaScript. Предполагается, что мы уже знакомы с такими основами, как циклы, функции и обратные вызовы.
- Значение по сравнению с эталоном
Чтобы понять всю тему, вы должны понять 3 разные вещи:
- Как базовые структуры данных реализованы на языке (объекты, примитивные типы, изменчивость).
- Как работает присвоение / копирование / переназначение / сравнение переменных
- Как переменные передаются в функции
В Ruby нет примитивных типов, и все является объектом, включая целые числа и логические значения. В отличие от Ruby, в JavaScript есть примитивные типы. ЭтоBoolean
, null
, undefined
, String
и Number
.
2. Объем
Поймите разницу между глобальной областью видимости, областью действия функции и областью действия блока. Узнайте, какие переменные и где доступны. Знайте, как движок JavaScript выполняет поиск переменных.
3. Подъем
Помните, что объявления переменных и функций подняты до вершины их доступной области видимости. Помните, что функциональные выражения не поднимаются.
4. Закрытие
Знайте, что функция сохраняет доступ к области, в которой она была создана. Знайте, что это позволяет нам делать с нашим кодом. Поймите, что замыкания позволяют скрывать данные, запоминать их и создавать динамические функции.
5. this
Знать правила this
привязки. Знайте, как это работает, умейте вычислять, чему оно будет соответствовать в любом фрагменте кода, и знайте, почему это полезно.
6. new
Знайте, как это связано с объектно-ориентированным программированием. Знайте, что происходит с функцией, вызываемой с помощью new
, и почему такая функция называется конструктором. Помните, что объект, созданный с помощью new
наследует от свойства прототипа функции.
Знайте, как работает каждая из этих функций. Знайте, как их использовать. Знайте, что они делают с this
.
Поймите, что наследование в JavaScript работает через цепочку [[Prototype]]
. Разберитесь, как настроить наследование через функции и объекты и как new
помогает нам его реализовать. Знайте, что такое свойства __proto__
и prototype
и для чего они нужны.
Понять цикл событий. Понять, как браузер обрабатывает вводимые пользователем данные, веб-запросы и события в целом. Умейте распознавать и писать асинхронный код. Поймите, как JavaScript является одновременно асинхронным и однопоточным.
Поймите, что функции - это первоклассные объекты в JavaScript, и что это означает. Знайте, что возврат функции из другой функции совершенно законен. Поймите методы, которые позволяют нам использовать замыкания и функции более высокого порядка.