5 вопросов по JavaScript, на которых каждый может ошибиться
Vložit
- čas přidán 1. 02. 2023
- В этом видео мы разберём пять каверзных вопросов по JS, которые могут застать вас врасплох на собеседовании.
Вопросы касаются объявления переменной через var, областей видимости, всплытия, стрелочных функций и других тонкостей.
Видео прежде всего полезно потенциальным джуниорам, однако может пригодиться и "взрослым" специалистам.
for (let i = 0; i
блестяяяще
да, там уже заметили ошибку в монтаже - обратите внимание, там кадр неудачно склеился и в конце становится правильным(
потому что let создается и присваивается в каждом цикле.
@@juniorslab1029 это не кадр "неудачно склеился", а ты невнимателен на монтаже. Не надо собственные косяки перекладывать на абстрактную "неудачу"
@@millimeter8406чот аж форточку захотелось открыть)))
Правильный ответ на вопрос с var: не используйте var. Не важно, какой был вопрос.
Ответ правильный, но на собеседовании не сработает :D
Если var придуман, значит пользовать его нужно! Для объявления глобальных переменных можно
Допустим, вам по работе предстоит рефакторить старый код, где как раз всё на var. Надо, как минимум, понимать, как это работает
@@i.am.rossalex Ему на замену пришли let и const, чтобы справиться с проблемой того самого "глобального" скоупа. Использовать var - плохая практика, ведущая к массе конфликтов, особенно в руках начинающего разработчика. Если не хочешь, чтобы твой пет-проект запороли на ревью при ТУ - не используй var, а если уж и решил, то попробуй-ка докажи, что именно var решило твои проблемы, а let и const не позволяют тебе с ними справиться
@@i.am.rossalex var работает быстрее, чем let и const, так как не имеет TDZ.
В последнем примере надо добавить, что перед тем как присвоить переменной "а" значение "3" (var a = 3) произойдет операция а++. Так как переменная "а" на этом этапе будет равна undefined результатом a++ будет NaN. А уже далее переменной "а" будет присвоено новое значение 3
100%
200%
тоже самое хотел написать, но благо решил почитать комментарии на случай повторения ;) лайк
Голос потрясающий!
Материал зачётный!
Кот бомбезный!
Звук обработан. То есть, любой голос можно (и в общем, нужно) обработать до состояния, когда он будет "профессиональным".
В примере №2 про области видимости переменных упоминается про hoisting как всплытие, но в JS термин всплытие используется для другого понятия - bubbling всплытие в обработке событий. А hoisting в данном контексте - это "поднятие", а не всплытие: Поднятие или hoisting - это механизм в JavaScript, в котором переменные и объявления функций, передвигаются вверх своей области видимости перед тем, как код будет выполнен. А еще важно, что JavaScript "поднимает" только объявление, но не инициализацию.
ДА, большое спасибо за поправку.
Первый вопрос: правильный ответ все равно совпал, потому что объекты равны не будут)
Вывод: дружно настраиваем eslint
Лет десять назад любил как раз такие задачки соискателям подкидывать.
Но... Практика показала, что пользы в них мало. Самозванцев более простые способы выявляют. А вполне потом работоспособные спецы-трудяжки их могут не решить с первого раза. Такие задачки подходят для "исследователей". Работник который может что-то неординарное сделать, но рутину решает плохо (медленно).
Вот такой мой вывод пока по таким задачкам )))
Очень радует, что кто-то из рекрутёров это понимает!
Да, всё так и есть. Эти задачки - сухая теория, которую знать, может и надо, но порой можно и обойтись - главное понимать общие принципы. Также, верно и обратное - не факт, что человек, знающий как решить такое, способен разворачивать и поддерживать более серьёзные проекты.
В общем, это похоже на то, как если бы журналиста при приёме на работу тестировали разгадыванием кроссвордов. А что - вроде и проверка языка, и вроде бы проверка эрудированности, но в работе это далеко не на первом месте..)
Видео понравилось, короче учить и учить ещё😨 Удачи каналу!
😮
по settimeout косяк, там отработает от 0 до 5, потому что лет, а не вар. При вар будет то что автор сказал.
for (let i = 0; i < 5; i++) {
setTimeout(()=>console.log(i),i*100)
}
Код действительно выведет от 0 до 5, но не потому, что let блочный
исходя из такой логики...
let i = 0;
setTimeout(()=>console.log(i),100);
i++;
i++;
...код выше должен вывести - 0, но на самом деле выведет - 2
а этот пять пятёрок
let i = 0;
for (; i < 5; i++) {
setTimeout(()=>console.log(i),i*100)
}
let в for - это единственный случай когда переменная замыкается по значению
было полезно. лайк и подписка👍
Большое спасибо за уроки!
Давай дальше видосы. Оч круто
ОТличное видео!
А где новые ролики?(
Ага, а при приеме на работу в какую-то "Пятерочку" нужно чтобы кассиров проверяли на умение пользоваться счетными палочками, у юристов спрашивать про свод законов двенадцати таблиц, ну а программистов нужно наверное спрашивать про программирование на перфокартах:)
5 вопросов просто на "порассуждать" и к практическим знаниям отношения не имеют.
Я бы наверное напрягся, если бы мне кандидат на все 5 подобных вопросов правильно ответил:)
Почему у этого канала так мало просмотров? Качество видео просто топ. Этот канал заслуживает гораздо большего.
потому что на этом канале всего один видос
Крутая подача! Где еще видео?)
Видео конечно интересное)
но эти задачки с VAR) как по мне это уже далекое прошлое, последний раз писал его в 2015 году
никто при нормальной разработке фронт-енд приложения (где есть норм ревью кода) не позволит вам написать VAR
Вы, видимо, уже опытный разработчик, поэтому и не проходили давно собеседования для Джуниоров. Поверьте - вопросы про var никуда не делись! :D
В старом легаси, теоретически, встречается. Но главное: это вопросы не практические, а просто проверить знания теории.
невероятно, я именно так себе и представлял javaScript.
Хорошо объясняешь и голос приятны спокойный, Короче спасибо, я подписался.
Только где обещанные короткие видео объясняющие области видимости, хоистинг и прочее? Не вижу на канале.
Спасибо на добром слове!
Да, материалы готовятся, я обновил канал.
Скоро ффсё будет!
видимо планы или изменились или очень заняты?@@juniorslab1029
Спасибо за обучающее видео! Все отлично! По nextjs 13 версии можно тоже сделать подобное?
Хорошее видео, вопрос про this стрелочной функции у меня сегодня на интервью был.
О, и как? прошёл интервью? :)
@@juniorslab1029 Жду результата. Думаю что будет отрицательный, потому что половину вопросов не ответил, к примеру тот же вопрос "на что ссылается this стрелочной функции". Плюс это было интервью на стажировку по Ангуляру, на которую в первую очередь расматривают знающих Angular, потом уже людей знающих React или Vue, я со второй группы.
@@WinchesterD понял. Да, с потолка так и не ответить на вопрос про this 🙄
Тоже не хочу с Ангуляром иметь дело))
@@juniorslab1029 А почему? Мне конечно куда больше React нравится, но просто интересно.
@@WinchesterD Никакой личной неприязни к Ангуляру, чисто вопросы коммерческой перспективы - если открыть любой сайт с вакансиями по фронтенду JS, там будет наверное, этак 70% - Реакт, остальные 30 уже делят между собой Angular, Vue и т.д.
С другой стороны, чем меньше знающих Ангуляр, тем лучше для тех кто его изучил :)
Но я для себя выбрал такой, более попсовый стэк. :D
Надеюсь будет ещё контент
классный канал
var str = "hello";
console.log(str[0]);
str[0] = 'A';
console.log(str[0]);
*Варианты ответа:*
1) ошибка TypeError
2) undefined, A
3) h, h
4) undefined, undefined
5) h, A
3) h, h
конечно же :)
Строка - это строка, и хотя к ней можно обращаться как к массиву символов, присвоить им другое значение нельзя (иначе это и был бы массив, а не единая строка).
Вот еще каверзный вопрос )
let a = {};
function cleara(a) {
console.log(a);
a.b = 2;
console.log(a);
a = null;
console.log(a);
}
cleara(a);
console.log(a)
выведет 1 раз null. Правильно?
Последний был настолько очевиден, что после setTimeout и стрелочной функции, я молча заорал: данунахер неужели 1!?
круть😲
нет в JS спецификации такого определения как Hoisting
3й вопрос записан ошибочно
Такими каверзными вопросами были отсеяны ху-я туча потенциально нормальных спецов. Из которых можно было вырастить классных разработчиков. Самому встречались кейсы когда один и тот же по сути вопрос задавался в разных вариациях и причем ответы были на 90% были похожи, с не большой разницей.
А в вопросе с таймаутом нас просто газлайтят?
Несколько ошибок в видосе как недопустить ошибки на собеседовании. А точно остальной части видое можно верить?
третий пример с ошибкой
У тебя голос диктора) можно озвучкой заниматься и пошло в попу это программирование)
Эм. 6:00 "не имеет никакого свойства goodbye" - нет, window не имеет никакого свойства object. В консоли же верно вывелось.
С var не понял,
не слушай душнил продолжай
тогда уж совет по первому кейсу не ";" ставить, а преттир
а увидев var на собесе, уже критерий что мне там работать не следует
Гуф рассказывает про джаваскрипт
Как-нибудь в одном из видео попытаюсь рассказать под бит, но не гарантирую что смогу сделать это картаво)))
Зачем использован var в 2023 году?
Вар используется в таких случаях: 95% -мозгоебство на собеседовании. Оставшиеся 5% - поддержка старого легаси. Все, применение окончено
@@user-ds7ct2vy1d Абсолютно так! Именно загадки для техсобеседований :)
Это же не живой код, а просто пример того, что дают в заданиях на технических собеседованиях. Нет смысла спрашивать у рекрутёров, зачем вам VAR :)
Все понимают, что var, по умолчанию, не используется сейчас, но тем не менее задачи с ним позволяют понять, насколько джуниор понимает как устроены области видимостей.
@@juniorslab1029 Пишу на Js 3+ года. Но тем неменее было интерестно освежить память. 🫡
То есть все учителя вокруг убеждают тебя что var это пережиток прошлого и что его уже не используют, при этом находятся люди которые с пеной у рта доказывают что var нужно знать и придётся с ним работать🤷♂️
А кто говорит, что с ним придётся работать? 😃
Я больше скажу - в работе и не придётся отвечать на вопрос "что такое всплытие, контекст", "перечислите виды функций" или, скажем, "Джаваскрипт - синхронный или асинхронный язык". Это в работе. А вот на собесееедовании.... )
обычно такие вопросы задают на собесах те, кто хочет свое чсв поднять
это вообще никак к работе не относится и только впустую время тратится, тупые задачки от которых толку в работе 0
А на теоретических собесах для Джуниоров бывают не тупые задачки? :)
for(let i =0; i