![Juniors Lab](/img/default-banner.jpg)
- 1
- 23 617
Juniors Lab
Poland
เข้าร่วมเมื่อ 2 ก.พ. 2023
5 вопросов по JavaScript, на которых каждый может ошибиться
В этом видео мы разберём пять каверзных вопросов по JS, которые могут застать вас врасплох на собеседовании.
Вопросы касаются объявления переменной через var, областей видимости, всплытия, стрелочных функций и других тонкостей.
Видео прежде всего полезно потенциальным джуниорам, однако может пригодиться и "взрослым" специалистам.
Вопросы касаются объявления переменной через var, областей видимости, всплытия, стрелочных функций и других тонкостей.
Видео прежде всего полезно потенциальным джуниорам, однако может пригодиться и "взрослым" специалистам.
มุมมอง: 23 646
Эм. 6:00 "не имеет никакого свойства goodbye" - нет, window не имеет никакого свойства object. В консоли же верно вывелось.
Большое спасибо за уроки!
Ага, а при приеме на работу в какую-то "Пятерочку" нужно чтобы кассиров проверяли на умение пользоваться счетными палочками, у юристов спрашивать про свод законов двенадцати таблиц, ну а программистов нужно наверное спрашивать про программирование на перфокартах:) 5 вопросов просто на "порассуждать" и к практическим знаниям отношения не имеют. Я бы наверное напрягся, если бы мне кандидат на все 5 подобных вопросов правильно ответил:)
А в вопросе с таймаутом нас просто газлайтят? Несколько ошибок в видосе как недопустить ошибки на собеседовании. А точно остальной части видое можно верить?
не слушай душнил продолжай
Крутая подача! Где еще видео?)
Вот еще каверзный вопрос ) 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. Правильно?
А где новые ролики?(
Почему у этого канала так мало просмотров? Качество видео просто топ. Этот канал заслуживает гораздо большего.
потому что на этом канале всего один видос
нет в JS спецификации такого определения как Hoisting
То есть все учителя вокруг убеждают тебя что var это пережиток прошлого и что его уже не используют, при этом находятся люди которые с пеной у рта доказывают что var нужно знать и придётся с ним работать🤷♂️
А кто говорит, что с ним придётся работать? 😃 Я больше скажу - в работе и не придётся отвечать на вопрос "что такое всплытие, контекст", "перечислите виды функций" или, скажем, "Джаваскрипт - синхронный или асинхронный язык". Это в работе. А вот на собесееедовании.... )
Если надо будет с легаси работать, то там могут встретиться var
третий пример с ошибкой
круть😲
for(let i =0; i<=5; i++){ setTimeout(function(){ console.log(i); }, i*600) }' сами введите в консоль 0 1 2 3 4 5
Голос потрясающий! Материал зачётный! Кот бомбезный!
Звук обработан. То есть, любой голос можно (и в общем, нужно) обработать до состояния, когда он будет "профессиональным".
for (let i = 0; i <= 5; i++) { setTimeout(function () {console.log(i)}, i * 600); } Как раз последовательно выведет 0, 1, 2, 3, 4, 5 так как значения переменных, которые объявлены с помощью let фиксируются в колбэке. Если бы вместо let был var, тогда да, вывел бы одни 6.
блестяяяще
да, там уже заметили ошибку в монтаже - обратите внимание, там кадр неудачно склеился и в конце становится правильным(
потому что let создается и присваивается в каждом цикле.
@@juniorslab1029 это не кадр "неудачно склеился", а ты невнимателен на монтаже. Не надо собственные косяки перекладывать на абстрактную "неудачу"
@@millimeter8406чот аж форточку захотелось открыть)))
3й вопрос записан ошибочно
Лет десять назад любил как раз такие задачки соискателям подкидывать. Но... Практика показала, что пользы в них мало. Самозванцев более простые способы выявляют. А вполне потом работоспособные спецы-трудяжки их могут не решить с первого раза. Такие задачки подходят для "исследователей". Работник который может что-то неординарное сделать, но рутину решает плохо (медленно). Вот такой мой вывод пока по таким задачкам )))
Очень радует, что кто-то из рекрутёров это понимает! Да, всё так и есть. Эти задачки - сухая теория, которую знать, может и надо, но порой можно и обойтись - главное понимать общие принципы. Также, верно и обратное - не факт, что человек, знающий как решить такое, способен разворачивать и поддерживать более серьёзные проекты. В общем, это похоже на то, как если бы журналиста при приёме на работу тестировали разгадыванием кроссвордов. А что - вроде и проверка языка, и вроде бы проверка эрудированности, но в работе это далеко не на первом месте..)
В примере №2 про области видимости переменных упоминается про hoisting как всплытие, но в JS термин всплытие используется для другого понятия - bubbling всплытие в обработке событий. А hoisting в данном контексте - это "поднятие", а не всплытие: Поднятие или hoisting - это механизм в JavaScript, в котором переменные и объявления функций, передвигаются вверх своей области видимости перед тем, как код будет выполнен. А еще важно, что JavaScript "поднимает" только объявление, но не инициализацию.
ДА, большое спасибо за поправку.
С var не понял,
классный канал
Первый вопрос: правильный ответ все равно совпал, потому что объекты равны не будут) Вывод: дружно настраиваем eslint
ОТличное видео!
Надеюсь будет ещё контент
обычно такие вопросы задают на собесах те, кто хочет свое чсв поднять это вообще никак к работе не относится и только впустую время тратится, тупые задачки от которых толку в работе 0
А на теоретических собесах для Джуниоров бывают не тупые задачки? :)
тогда уж совет по первому кейсу не ";" ставить, а преттир а увидев var на собесе, уже критерий что мне там работать не следует
Гуф рассказывает про джаваскрипт
Как-нибудь в одном из видео попытаюсь рассказать под бит, но не гарантирую что смогу сделать это картаво)))
Давай дальше видосы. Оч круто
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 конечно же :) Строка - это строка, и хотя к ней можно обращаться как к массиву символов, присвоить им другое значение нельзя (иначе это и был бы массив, а не единая строка).
было полезно. лайк и подписка👍
невероятно, я именно так себе и представлял javaScript.
Видео конечно интересное) но эти задачки с VAR) как по мне это уже далекое прошлое, последний раз писал его в 2015 году никто при нормальной разработке фронт-енд приложения (где есть норм ревью кода) не позволит вам написать VAR
Вы, видимо, уже опытный разработчик, поэтому и не проходили давно собеседования для Джуниоров. Поверьте - вопросы про var никуда не делись! :D В старом легаси, теоретически, встречается. Но главное: это вопросы не практические, а просто проверить знания теории.
У тебя голос диктора) можно озвучкой заниматься и пошло в попу это программирование)
Последний был настолько очевиден, что после setTimeout и стрелочной функции, я молча заорал: данунахер неужели 1!?
Правильный ответ на вопрос с var: не используйте var. Не важно, какой был вопрос.
Ответ правильный, но на собеседовании не сработает :D
Если var придуман, значит пользовать его нужно! Для объявления глобальных переменных можно
Допустим, вам по работе предстоит рефакторить старый код, где как раз всё на var. Надо, как минимум, понимать, как это работает
@@i.am.rossalex Ему на замену пришли let и const, чтобы справиться с проблемой того самого "глобального" скоупа. Использовать var - плохая практика, ведущая к массе конфликтов, особенно в руках начинающего разработчика. Если не хочешь, чтобы твой пет-проект запороли на ревью при ТУ - не используй var, а если уж и решил, то попробуй-ка докажи, что именно var решило твои проблемы, а let и const не позволяют тебе с ними справиться
@@i.am.rossalex var работает быстрее, чем let и const, так как не имеет TDZ.
Спасибо за обучающее видео! Все отлично! По nextjs 13 версии можно тоже сделать подобное?
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 - это единственный случай когда переменная замыкается по значению
В последнем примере надо добавить, что перед тем как присвоить переменной "а" значение "3" (var a = 3) произойдет операция а++. Так как переменная "а" на этом этапе будет равна undefined результатом a++ будет NaN. А уже далее переменной "а" будет присвоено новое значение 3
100%
200%
тоже самое хотел написать, но благо решил почитать комментарии на случай повторения ;) лайк
по settimeout косяк, там отработает от 0 до 5, потому что лет, а не вар. При вар будет то что автор сказал.
Хорошее видео, вопрос про this стрелочной функции у меня сегодня на интервью был.
О, и как? прошёл интервью? :)
@@juniorslab1029 Жду результата. Думаю что будет отрицательный, потому что половину вопросов не ответил, к примеру тот же вопрос "на что ссылается this стрелочной функции". Плюс это было интервью на стажировку по Ангуляру, на которую в первую очередь расматривают знающих Angular, потом уже людей знающих React или Vue, я со второй группы.
@@WinchesterD понял. Да, с потолка так и не ответить на вопрос про this 🙄 Тоже не хочу с Ангуляром иметь дело))
@@juniorslab1029 А почему? Мне конечно куда больше React нравится, но просто интересно.
@@WinchesterD Никакой личной неприязни к Ангуляру, чисто вопросы коммерческой перспективы - если открыть любой сайт с вакансиями по фронтенду JS, там будет наверное, этак 70% - Реакт, остальные 30 уже делят между собой Angular, Vue и т.д. С другой стороны, чем меньше знающих Ангуляр, тем лучше для тех кто его изучил :) Но я для себя выбрал такой, более попсовый стэк. :D
Зачем использован var в 2023 году?
Вар используется в таких случаях: 95% -мозгоебство на собеседовании. Оставшиеся 5% - поддержка старого легаси. Все, применение окончено
@@user-ds7ct2vy1d Абсолютно так! Именно загадки для техсобеседований :)
Это же не живой код, а просто пример того, что дают в заданиях на технических собеседованиях. Нет смысла спрашивать у рекрутёров, зачем вам VAR :) Все понимают, что var, по умолчанию, не используется сейчас, но тем не менее задачи с ним позволяют понять, насколько джуниор понимает как устроены области видимостей.
@@juniorslab1029 Пишу на Js 3+ года. Но тем неменее было интерестно освежить память. 🫡
Видео понравилось, короче учить и учить ещё😨 Удачи каналу!
😮
Хорошо объясняешь и голос приятны спокойный, Короче спасибо, я подписался. Только где обещанные короткие видео объясняющие области видимости, хоистинг и прочее? Не вижу на канале.
Спасибо на добром слове! Да, материалы готовятся, я обновил канал. Скоро ффсё будет!
видимо планы или изменились или очень заняты?@@juniorslab1029