Полный гайд по JavaScript собеседованию. Все в 1 видео!

preview_player
Показать описание


Roadmap по каналу:

JavaScript полный курс, где в одном видео вы узнаете и повторите все "сложные" элементы, которые спрашивают на собеседовании
JavaScript интервью. Полное пособие (типы данных, контекст, прототипы и другое)
В видео я разберу множество тем для прохождения интервью на JavaScript. Будет разобрано 11 тем:

1. Типы данных в JavaScript 00:00
2. Значения и ссылки 25:32
3. Как работает Scope 29:38
4. Что такое Hoisting 33:45
5. Переменные Let const 39:30
6. Замыкания 47:09
7. Что такое IIFE 59:33
8. Контекст 1:03:53
9. Как работает new 1:17:17
10. Как работают прототипы 1:21:25
11. Асинхронность 1:34:38

Сложный JavaScript простым языком:

#javascript #js
Рекомендации по теме
Комментарии
Автор

Есть некоторые неточности и замечания по курсу, а некоторые вещи можно ещё проще рассказать.

`` - вот такие обратные кавычки это не просто "литерал", а это "литерал шаблонной строки" или просто "шаблонный литерал", так же как [] - литерал массива (new Array), или {} - литерал объекта (new Object), или /something/ - литерал регулярного выражения (new RegExp('something')) и т.п.
Кстати, двойные и ординарные кавычки (вместе со всем что внутри них находится) - это тоже литерал... литерал строки или "строковый литерал".

Типы бывают двух основных видов: примитивы (простые типы: строки, числа и т.п.) и комплексные (не простые: объекты, массивы, инстансы классов и т.п.). Примитивы делятся ещё на 2 категории: примитивы, которые ведут себя как объекты (number, string) и самые настоящие простые типы (null, boolean).

Про "плюс" и "минус" тоже как-то сложно. Просто плюс может использоваться как арифметический оператор, так и не арифметический (конкатенация), а какое поведение будет выбрано - зависит от типов членов выражения. Объяснение проще: конкатенация строк (не арифметическая операция) может быть выполнена при помощи "плюса", если в выражении есть член с типом String, то будет выполнена конкатенация (в случае если тип не String и не Numer, то будет выполнена опять таки конкатенация, но с предварительной сериализацией значения - записи значения в виде строки). Во всех остальных случаях (деление, вычитание, умножение - чисто арифметические операции) будет выполнена попытка привести к типу Number все члены выражения.

Про сравнение с объектом такая же история, как и описана выше - при неявном сравнении со строкой другие значения с типом не String сериализцются. Просто пустой массив сериализуется в пустую строку, а "пустой" объект сериализуется в строку со значением '[object Object]'. Для нагляндости можно поиграться с:
String({})
String([])
String([1])
String([1, 2, 3])

Насчёт сравнения a===b, a===c: не совсем, там ничего при приведении не несовпадает. При использовании строгого сравнения (при сравнении двух значений с комплексными типами) сравниваются идентификаторы ссылок. Если идентификаторы совпадают, то true, если не совпадают, то false. При сравнении двух комплексных типов срваниваются не их значения, а ссылки (а точнее идентификаторы ссылок).
Можно ощутить разницу поигравшись с:
const o = {}
o == '[object Object]'
// = true // т.к. одно из значений String, то другое, не строковое значение сериализуется
o === '[object Object]' // = false // а тут сериализация не происходит, т.к. сравнение строгое
[1, 2, 3] === [1, 2, 3] // = false // тут сравниваются 2 разных объекта (мы их создали "на лету")
'1, 2, 3' == [1, 2, 3] // = true // тут происходит сериализация значния справа
{} === {} // = false // тут 2 разных объекта, хоть они и имеют одинаковое содержимое
o === o // = true // тут сравнение объекта с самим собой

Некоторые вещи становятся проще, если их называть на родном для вас языке. Дело в том, что для англоговорящих людей это именно так и происходит, чаще всего они понимают суть какого-то определения/процесса из его названия. Новичкам надо объяснять именно так, как мне кажется, оно так интуитивно понятнее. Например,
Скоуп (scope) - область видимости (намного больше объясняет, чем "скоуп").
Хойстинг (hoising) - подъём, а в русском языке это принято называть "всплывание" или "всплытие". Так же намного понятнее, чем "хойстинг", вся суть в названии.
Переассаин (reassigning) - переопределение или переназначение.

Можно ещё посвятить новичка в разницу между isNaN и Number.isNaN :)

alexkheben
Автор

"Js за час" здорового человека)

xweksft
Автор

Спустя уже почти 4 года видео все еще актуально и все еще проясняет очень многое. Спасибо огромное Владилен, за ваши старания в нашу пользу.

godaro
Автор

Ловите таймкоды:
1. Типы данных в JavaScript 04:25
2. Значения и ссылки 25:32
3. Как работает Scope 29:38
4. Что такое Hoisting 33:45
5. Переменные Let const 39:30
6. Замыкания 47:09
7. Что такое IIFE 59:33
8. Контекст 1:03:53
9. Как работает new 1:17:17
10. Как работают прототипы 1:21:25
11. Асинхронность 1:34:38

VladilenMinin
Автор

При приведении типов во время сравнения через == важно помнить 2 вещи которые помогут предсказать результат
1. Представьте что вы приводите все к Number, типа Number(a) == Number(b)
2. Помните что undefined, null, {} и Symbol - это не значения - это типы. По сути по значению тут вообще нечего сравнивать так как значений нет.
Вот почему
[]==false => true Number([]) - 0, Number(false) - 0
Но
{}==false => false {} - это тип, тут нет значени,
null==false => false null - это тип, тут нет значени,
Я не уверне в том насколько это близко к правде, но это помогает запомнить все эти задачи с сравнением

maxbasov
Автор

Ничего нового не узнал, но для повторения это идеально! Всё в одном месте собрано. Круто. А для тех кто только начинает изучать - это видео просто находка!

SoreraRU
Автор

Автору видео желаю удачу и чтоб у него все исполнялось, ведь просто так выпускать видео и такие хорошие не все могут

vasya
Автор

Спасибо огромное! Ваш труд очень помогает! Замечательная подача, нет "воды". Отличное пособие чтобы повторять язык JS в дороге или на выходных в свободные часы.

artkitbit
Автор

Супер, как раз смотрел твои уроки по Ангуляру, дай думаю на ютубе чет гляну, а тут вот на это видео наткнулся да еще и материал интересный и застрял))), спасибо)

SergioUkrAr
Автор

Прекрасная подача материала! Получил большое удовольствие от просмотра. Благодарю. :)

ladutska
Автор

2:35 Типи
10:30 Приведение типов
25:28 Значения
29:40 Область видимости
33:42 Поднятие
37:24 Объявление функций
39:28 let и const
47:10 Замыкание
59:39 IIFE
1:03:54 Контекст
1:17:16 New
1:21:30 Прототипы
1:34:38 Асинхронность

Vasya
Автор

Владилен, всё с толком объясняет. Понятно и доходчего. Спасибо за нелёгкий труд. 💪

olegpivkin
Автор

Владлен! Спасибо за твой труд! То, что ты делаешь мне очень нравится и помогает!

pfhtthx
Автор

Спасибо за видос, что-то освежил в памяти, что-то узнал новое.

BearVodkaAndValenki
Автор

Большое спасибо за такие уроки, все понятно и становится по своим полочкам в голове.

ibfuotx
Автор

как же приятно слушать) Все ясно, просто, хорошие примеры, без воды, в комфортном темпе. Спасибо за уроки!

racman
Автор

Спасибо, Владилен! Очень много классного контента на твоем канале. Простыми словами о сложном!!!

aleksandrglebik
Автор

Ты в моём личном топе, напару с диманом из ИТ камасутры. Респект вам за годный контент.

steel
Автор

Вселенское Вам спасибо! Очень все чётко изложено )

elenakniazeva
Автор

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

oksanazaiakina