Кто самый слабый JavaScript - разработчик?

preview_player
Показать описание
Настало время определить самого сильного и слабого JavaScript-программиста. Ни одно интервью не может сравниться по сложностью с этим испытанием!

0:00 Правила игры
00:28 Раунд 1
01:20 Раунд 2
02:47 Раунд 3
03:35 Раунд 4
04:15 Раунд 5
05:35 Раунд 6
06:20 Раунд 7
07:10 Итоги игры

______________________________

Один из моих самых любимых каналов о Фронтенде в telegram:

______________________________

Внешние источники:

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

Тренажеры HTML Academy (HTML, CSS, JS, React) + Академия + Книга рецептов фронтендера + комьюнити
за 99 рублей:

Какие тренажеры бывают:

Подписывайтесь:



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

Однако в комменты приходят большое количество опытных ребят и оставляют свои замечания. Я всем настоятельно советую всегда их читать.

Найти их просто: они начинаются со слов автор несет херню и у них много лайков! (я тоже стараюсь отмечать их).

Касательно этого видео:

1) Я задаю вопрос: что будет если массиву указать длину больше, чем элементов в нем array.length = 100
- Отвечаю, что массив заполнится элементами в значении undefined.



Вообще говоря у элементов действительно будет значение undefined. Но в комментах была замечательная поправка: массив на самом деле заполнится пустыми ячейками, у которых уже будет значение undefined.
Это важное отличие, потому что такие ячейки будут пропускаться в циклах map, forEach и т.д.

А такой undefined пропущен не будет
const array = [1, 2, undefined];

2) Показываю пример реверсивного цикла for
for (let index = array.length; index > 0; index--) {



Этот цикл не совсем корректен. Я стянул его со статьи и не додумался проверить.
А все потому что цикл начнется с элемента массива, которого нет array[array.length].

Корректный цикл:
for (let index = array.length - 1; index >= 0; index--) {

или

for (let index = array.length; index--; ) {




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



Один из моих самых любимых каналов о Фронтенде в telegram:



Настало время определить самого сильного и слабого JavaScript-программиста. Ни одно интервью не может сравниться по сложностью с этим испытанием!

0:00 Правила игры
00:28 Раунд 1
01:20 Раунд 2
02:47 Раунд 3
03:35 Раунд 4
04:15 Раунд 5
05:35 Раунд 6
06:20 Раунд 7
07:10 Итоги игры




Внешние источники:

#javaScript #frontend #dev

Howtogoit
Автор

Когда на собеседование звучат такие вопросы, можно смело уходить. 🌚

props
Автор

2:00 Ошибка в "реверсивном" коде. Начальное значение индекса должно быть на 1 меньше длины массива и проверка индекса должна быть на больше ИЛИ равно.
В дополнение стоит отметить, что длину массива для прямого прохода можно просто в переменную сохранить. Впрочем, сегодня и это не надо, современные движки прекрасно оптимизируют стандартную запись i < arr.length, поэтому изменение этой записи, потенциально, может наоборот снизить производительность данной части кода.

BOCbMOU
Автор

Красота смотреть такие ролики или читать статьи вроде "хитрости такого-то языка" и понимать, что я почти всё это знаю.

VasyaFF
Автор

Класс, спасибо за новое видео! Каждый раз жду, пересматривая старые видосы😁
5/7, считаю, что это достойный результат)

funnyenglish
Автор

3/7
Было интересно! Очень нравится контент на твоём канале :)
Даже не думай бросать это дело! Потому что у тебя отлично получается :)

MegaXyita
Автор

Тот случай когда автор сам наделал ошибки))):
1:58 «реверсивный цикл» - в предоставленном примере первый проход (index = hugeArray.legth) вернет undefined, такого элемента не существует в массиве (hugeArray[index]). Index > 0 никогда не пройдет нулевой элемент массива;
4:10  ['mango', 'apple', undefined] - если задать length больше длины массива, то массив заполнится пустыми ячейками (empty), а не ячейками со значениями undefined. Это важное отличие, которое проявит себя в .map и подобных методах;
6:53 array.filter(Boolean) «Функция конструктор Boolean» - никак не конструктор (не фабрика), обычная функция которая возвращает не экземпляр объекта, а примитив boolean.

prog
Автор

Спасибо, друг 🤝
Всегда жду новый выпуск 👍
До сих пор под впечатлением Принц Персии 🔥👏

max_mgtow
Автор

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

DenisB-df
Автор

3:30 вот тут не согласен. Во-первых, давать задачу на внимательность и ограничивать по времени 5 секунд это фу. Ты, как говорится, либо трусы надень, либо крестик сними. Во-вторых, зачем программисту внимательность к опечаткам, если есть линтер, автокомплит и юнит тесты?

ИмяФамилия-эфв
Автор

4:11 - новое значение массива будет empty, а не undefined, что в свою очередь может привести к неожиданному поведению при работе с методами массива

rodrigorubberduck
Автор

Спасибо за видео! Не так важно, что были какие-то неточности, как по мне не самые критичные. Хотелось бы больше такого контента, было интересно.

JustTrace
Автор

Вместо реверсивного массива можно же вот так сделать for (let i = 0, len = hugeArray.length; i < len; i++)

vovergg
Автор

02:47 Раунд 3 - объяснение неверное.
Результат будет undefined не потому что блок кода ничего не знает про переменную number.
Эта переменная доступна.
Причина лишь в том, что после прохождения цикла index станет равен 4.
В массиве нет элемента с таким индексом, поэтому undefined

a-k-kord
Автор

Интересная рубрика, чтобы стать true разработчиком буду смотреть наблюдать за новыми видео на канале 👍..и вникать, хоть и мало правильных ответов зато сколько нюансов и есть что почерпнуть. Автору респект.

theoty-js
Автор

Все правильно кроме реверсивного цикла (хотя про сам цикл for я помню) и точка с запятой... Очень порадовал мой правильный ответ на 6 задачу. Хорошее видео, делай еще

lostincoda
Автор

Учитывая, что во втором раунде 2 вопроса я бы дал себе 4.5/7)
Меня подловили на точке с запятой в цикле, на контексте this, ну и то что slice самый быстрый способ скопировать массив я тоже не знал

zoodogood
Автор

Подлая точка с запятой в подлом джаваскрипте) Побольше таких роликов про тонкие моменты js !

РенарРейнеке
Автор

Ответил правильно на почти все пункты, кроме отдого. Немного сбил столку пример с object.method - так что тут у меня фейл.

Ну и по поводу реверсивнго цикла, как уже написали ниже, сейчас JS хорошо оптимизирован, так что скорости будут равны. Ну и просто привычка, перед вызовом цикла, длину записываем в переменную. 

Есть еще один пример, пройтись по циклу, не прибегая к доп переменной. С одним условием, что массив не содержит null, boolean, undefined т/е такой подход хорошо подходит для прохождения по массиву объектов, к примеру получили данные из API. Пример ниже

for (let i = 0; response[i]; i++ {
console.log(response[i]);
}

dhotovskyi
Автор

2/7 ))) Я заметил точку с запятой перед блоком и запятую в шестом примере. Знаний в общем у меня нет, ну хоть нормально с наблюдательностью. )) Правда у меня только год опыта. Вообще, очень интересный контент! Фильтрация по boolean - супер лайфхак, буду применять!

SmirnovVladimir