Этот блог будет представлен в виде списка. Потому что всем нравятся листики; это научно доказано.

Я представлю 10 концепций, которые обычно обсуждаются на собеседованиях по JavaScript. Предполагается, что мы уже знакомы с такими основами, как циклы, функции и обратные вызовы.

  1. Значение по сравнению с эталоном

Чтобы понять всю тему, вы должны понять 3 разные вещи:

  • Как базовые структуры данных реализованы на языке (объекты, примитивные типы, изменчивость).
  • Как работает присвоение / копирование / переназначение / сравнение переменных
  • Как переменные передаются в функции

В Ruby нет примитивных типов, и все является объектом, включая целые числа и логические значения. В отличие от Ruby, в JavaScript есть примитивные типы. ЭтоBoolean, null, undefined, String и Number.

2. Объем

Поймите разницу между глобальной областью видимости, областью действия функции и областью действия блока. Узнайте, какие переменные и где доступны. Знайте, как движок JavaScript выполняет поиск переменных.

3. Подъем

Помните, что объявления переменных и функций подняты до вершины их доступной области видимости. Помните, что функциональные выражения не поднимаются.

4. Закрытие

Знайте, что функция сохраняет доступ к области, в которой она была создана. Знайте, что это позволяет нам делать с нашим кодом. Поймите, что замыкания позволяют скрывать данные, запоминать их и создавать динамические функции.

5. this

Знать правила this привязки. Знайте, как это работает, умейте вычислять, чему оно будет соответствовать в любом фрагменте кода, и знайте, почему это полезно.

6. new

Знайте, как это связано с объектно-ориентированным программированием. Знайте, что происходит с функцией, вызываемой с помощью new, и почему такая функция называется конструктором. Помните, что объект, созданный с помощью new наследует от свойства прототипа функции.

7. apply, call, bind

Знайте, как работает каждая из этих функций. Знайте, как их использовать. Знайте, что они делают с this.

8. Прототипы и наследование

Поймите, что наследование в JavaScript работает через цепочку [[Prototype]]. Разберитесь, как настроить наследование через функции и объекты и как new помогает нам его реализовать. Знайте, что такое свойства __proto__ и prototype и для чего они нужны.

9. Асинхронный JS

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

10. Функции высшего порядка

Поймите, что функции - это первоклассные объекты в JavaScript, и что это означает. Знайте, что возврат функции из другой функции совершенно законен. Поймите методы, которые позволяют нам использовать замыкания и функции более высокого порядка.