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