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

Поделиться
HTML-код
  • Опубликовано: 24 ноя 2024

Комментарии • 719

  • @VladilenMinin
    @VladilenMinin  2 года назад +2

    Эксклюзивный контент на моем Boosty: boosty.to/vladilen
    Исходники тут: t.me/js_by_vladilen/131

  • @zbitname
    @zbitname 3 года назад +124

    Есть некоторые неточности и замечания по курсу, а некоторые вещи можно ещё проще рассказать.
    `` - вот такие обратные кавычки это не просто "литерал", а это "литерал шаблонной строки" или просто "шаблонный литерал", так же как [] - литерал массива (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 :)

    • @romankrapivkin8325
      @romankrapivkin8325 3 года назад +6

      Дай Б-г тебе здоровья, добрый человек.

    • @xxxxrat
      @xxxxrat 3 года назад +1

      Спасибо! Не совсем, впрочем, понятно тогда такое поведение:
      {} == {} // = false
      То есть не происходит сериализации {} в '[object Object]', а сравнение происходит по идентификаторам ссылок?

    • @zbitname
      @zbitname 3 года назад +1

      @@xxxxrat конечно

    • @sn9807
      @sn9807 3 года назад +5

      Кто ты воин?) У вас есть статьи или что нибудь? С удовольствием бы почитал.

    • @Paks176
      @Paks176 7 месяцев назад +1

      Спасибо, думал все эти недочеты Владилена вручную искать, так как видео и объяснение крайне скупое, а самое главное не объясняет почему так происходит (а это спрашивают на собесах), типа просто запомните

  • @godaro
    @godaro Год назад +26

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

    • @user-chf7z61vnd6h8v
      @user-chf7z61vnd6h8v Год назад

      Но актуальность стоит проверять перед собесом, например типов уже 8, bigInt не хватает

  • @777Vasya77
    @777Vasya77 5 лет назад +217

    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 Асинхронность

  • @VladilenMinin
    @VladilenMinin  5 лет назад +280

    Ловите таймкоды:
    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

    • @СтройС-я9о
      @СтройС-я9о 5 лет назад

      Владилен расскажи по NodЕ req/res и т.д. нигде толком ничего нет

    • @VladilenMinin
      @VladilenMinin  5 лет назад +6

      У меня на канале есть нода за час. Там и проясняю

    • @inemiro
      @inemiro 5 лет назад +7

      в асинхронности не хватает несколько важных вещей: таски и микротаски, эвентлуп подробнее, туда же можно промисы, async-await, очень важно для понимания псевдоасихнронности js (что на клиенте, что в nodejs). Очень много ошибок с этим у ребят связано.

    • @VladilenMinin
      @VladilenMinin  5 лет назад +8

      @@inemiro На канале есть более подробные видео по этим темам

    • @inemiro
      @inemiro 5 лет назад +5

      Владилен Минин одно другому не мешает, тут же «полное пособие». Понимание работы эвентлупа и асинхронности очень важный аспект js, поэтому и не хватает именно в этом видео. То что отдельно есть - отлично

  • @SoreraRU
    @SoreraRU 4 года назад +63

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

  • @maxbasov5485
    @maxbasov5485 3 года назад +39

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

  • @steel1004
    @steel1004 5 лет назад +196

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

  • @Стас-с4ю5т
    @Стас-с4ю5т 5 лет назад +581

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

    • @ЕвгенийПанкратов-г5ь
      @ЕвгенийПанкратов-г5ь 5 лет назад +1

      Этого не хватит

    • @nickstojanovic9663
      @nickstojanovic9663 4 года назад +3

      @@ЕвгенийПанкратов-г5ь Если ты сделал тестовое задание хорошо, то 70 процентов вопросов на собеседовании скорее всего отвалятся

    • @austinpowers7030
      @austinpowers7030 4 года назад +14

      @@nickstojanovic9663 в нормальных конторах прежде идет собеседование, потом уже тестовое. В очень нормальных конторах идет сначала собеседование, потом тестовое, а потом второе собеседование.

    • @nickstojanovic9663
      @nickstojanovic9663 4 года назад +4

      @@austinpowers7030 я говорил о собственном опыте, рассматривая исключительно удаленку. Но спасибо за дополнение.

    • @anotherone8692
      @anotherone8692 3 года назад

      @@austinpowers7030 в нормальные конторы должно висеть по 300 апликантов и с каждым из них никто проводить собеседование не будет, первым всегда должен идти тест если контора действительно нормальная

  • @klazouski
    @klazouski 3 года назад +7

    Владилен, считаю, что при объяснении setTimeout в цикле нужно было бы также упомянуть, что при использовании let на каждую итерацию создается абсолютно новая переменная, в то время как переменная, объявленная через var, -- одна на весь цикл, и при каждой итерации изменяется только ее значение, в чем, собственно, и кроется фишка этого примера. А так все очень круто и доступно, спасибо!

  • @vasya8441
    @vasya8441 5 лет назад +22

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

  • @racman9964
    @racman9964 3 года назад +8

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

    • @AlexAlexis2012
      @AlexAlexis2012 2 года назад

      Вот только varyable произносится немного по другому

  • @eugene_rn
    @eugene_rn 5 лет назад +484

    Чувак, ты находка в русском ютубе

  • @romko-romario
    @romko-romario 3 года назад +14

    9:48 Добавлю от себя об одном очень важном аспекте разницы между null и undefined: в случае, если у функции есть параметр по умолчанию, и вызвать эту функцию, передав значение данного параметра undefined, то будет использован параметр по умолчанию, а если null - тогда null. Например:
    const fn = (value = 5) => value;
    console.log(fn(), fn(undefined), fn(null)); // 5 5 null

  • @unheilbar
    @unheilbar 4 года назад +76

    1:04:04 Что такое контекст? "Я в уме - ну это тоже самое что и scope".
    Владилен: Зачастую контекст часто путают с таким понятием как scope..

  • @OlehFiliak
    @OlehFiliak 3 года назад +22

    Привет, сделай список топовых вопросов на собеседовании, а также ответов на них. Это будет очень круто.

  • @romko-romario
    @romko-romario 3 года назад +3

    Владилен, если Вы читаете это - моя огромная благодарность! Я успешно прошёл своё первое техинтервью и получил свою первую работу, главным образом - благодаря урокам из Вашего плейлиста "Сложный JavaScript простым языком". Данное видео также очень помогло повторить изученное.

    • @music-to-calm-down
      @music-to-calm-down 3 года назад

      Привет) Поздарвяю тебя, так держать!) Если не секрет, сколько у тебя заняло обучение, и насколько трудные были вопросы на интервью?

  • @VladPd
    @VladPd 5 лет назад +32

    Контент ОГОНЬ!! Как раз для тех (как я ), кто думал, что изучил JS и пошел на собесы, и его там резко опускают на землю, а этот ролик проясняет очень многие из заданных там вопросов. Автору огромная благодарность!!!

  • @ВикторГубаревич-д4ф
    @ВикторГубаревич-д4ф 3 года назад +4

    Я очень сильно тебя благодарю за такую возможность подойти ближе к собеседованию!))

  • @codegorian6057
    @codegorian6057 2 года назад +11

    В JavaScript есть 8 основных типов данных.
    null,
    undifined,
    boolean,
    number,
    string,
    symbol
    object
    bigint. ( для целых чисел произвольной длины. )

    • @АндрейМаксименя
      @АндрейМаксименя Год назад +1

      На вопрос:
      Какие типы данных существуют в js (Стандарт языка ES6)
      Мне чатгпт ответил:
      boolean, string, number, undefined, null, symbol😅

  • @ghost91827
    @ghost91827 4 года назад +19

    Супер подача. Без воды, кратко, хорошие примеры. Спасибо за ваши уроки и курсы!

  • @artkit8bit
    @artkit8bit 5 лет назад +4

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

  • @Alina-nq9nw
    @Alina-nq9nw Год назад +1

    NaN это действительно number, number не обязан представлять только цифры. NaN это представитель чисел с плавающей запятой, поддерживается на аппаратном уровне, в компьютерах есть специальные процессоры для чисел float и NaN один из возможных его результатов.

  • @РузельАбдурахманов

    С вами я сильно продвинул свой скилл по js . Большое вам спасибо за столь полезный контент.

  • @dudovichenko
    @dudovichenko 4 года назад +1

    Смотрел твой курс по Vue/Nuxt, где ты периодически тихонько матерился в микрофон, когда что-то не получалось. Было ощущение, что просто забыл вырезать)) Всё ждал, будет ли здесь такое)) А в целом - огромное спасибо, отличная подборка!

  • @anzhelikabelinskaya207
    @anzhelikabelinskaya207 4 года назад +1

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

  • @ЕрланТлеубеков-т2е
    @ЕрланТлеубеков-т2е 5 лет назад +2

    очень познавательный канал и автор объясняет все очень простыми и понятными словами. Даже на 1.5х все очень понятно

  • @olegpivkin4073
    @olegpivkin4073 5 лет назад +2

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

  • @okeaniafree
    @okeaniafree 3 года назад +1

    Спасибо большое, за доступное разъяснение JS!!! Только что RUclips предложил ваши видео, теперь смогу точно разобраться в JS!!! Спасибо большое ещё раз, вы супер!

  • @igoristoian7557
    @igoristoian7557 3 года назад +1

    Как всегда ,Владилен лучший. Очень понятно объясняет, всё по полочкам. Единственное как мне кажется не хватает одной главы про промисы и может быть ещё одной главы про работу с сервером(GET,POST,PUT,DELETE), но это моё субъективное мнение. Спасибо ещё раз за твой контент!

  • @РусланКурбанов-и5щ
    @РусланКурбанов-и5щ 3 года назад +1

    Очередное собеседование и я здесь) Спасибо, Владилен!

  • @ladutska
    @ladutska 4 года назад +2

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

  • @couragic
    @couragic 4 года назад +9

    01:34:23 всё логично - здесь Вы меняете значение локальной ссылки на прототип, а не сам прототип.

  • @Фамилияиимя-ь8я
    @Фамилияиимя-ь8я 3 года назад +1

    Владилен, спасибо огромное за твой труд.

  • @oleksiiumrikhin4478
    @oleksiiumrikhin4478 Год назад

    Да прибудет с тобой сила Владилен)Спасибо)

  • @lzs2639
    @lzs2639 4 года назад +7

    (27:55) ... неточность:
    в переменной 'b' хранится ссылка на переменную 'a'.
    Это не совсем верно, что легко проверить, если зададим:
    'a = undefined'.
    Тогда увидим, что:
    'a -- undefined' ...... (переменная 'a' утратила ссылку на массив)
    'b = [1, 2, 3, 4] ...... (переменная 'b' сохранила ссылку на массив)
    То есть, обе переменные ссылались на один участок памяти:
    'a' --> 'memory_area',
    'b' --> 'memory_area'.
    поэтому, когда переменная 'a' потеряла ссылку на участок памяти ('a = undefined'), переменная 'b' продолжила ссылаться на тот же самый участок памяти независимо от состояния ссылки от переменной 'a'.

  • @MrKenny176
    @MrKenny176 5 лет назад +10

    Спасибо за уроки. На русском ютубе можно сказать уникальный контент делаешь! Очень надеюсь что не забросишь канал и будет ещё больше роликов. В том числе очень буду ждать по vue 3. Скоро кстати релиз)

  • @2difficult2do
    @2difficult2do 2 года назад

    Большое спасибо за краткий и практически полезный разбор JS на примерах. Случайно к Вам попал, но это именно то, что надо :)

  • @АнтонХарламов-ь9ы
    @АнтонХарламов-ь9ы 2 года назад

    Очень полезно,чтобы освежить знания и что-то вспомнить.Спасибо,Владилен!

  • @МаксимПирожков-ы3т

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

  • @Сергей-г8г6с
    @Сергей-г8г6с 3 года назад

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

  • @inemiro
    @inemiro 5 лет назад +2

    на 1:34:05 присваивается переменной proto новое значение. Со старым объектом ничего не происходит (операция присвоения). Чтобы поменять свойство year в proto, надо обновить свойство в объекте на который ссылается переменная proto, а не переопределить значение переменной, т.е. , например, proto.year = 999;

  • @elenakniazeva5388
    @elenakniazeva5388 5 лет назад +2

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

  • @MrBluffCatcher
    @MrBluffCatcher 2 года назад

    Я нубас полнейший!) Как же черт возьми круто! Владилен, огромное человеческое спасибо! Топ контент!

  • @dmitrypanteleeff
    @dmitrypanteleeff 2 года назад +1

    Владилен, спасибо большое за видеоролик. Вчера был на собеседовании, и меня спрашивали буквально по каждой теме из этого ролика. Твой ролик очень мне помог. Очень хороший материал для подготовки к собесу. Обращаюсь к тем, кто будет проходить собесы, помимо этих тем повторите темы с промисами, а также подробнее рассмотрите концепт работы Event Loop

    • @VladilenMinin
      @VladilenMinin  2 года назад +1

      Про ивентлуп на канале отдельный ролик

  • @chaostheory8706
    @chaostheory8706 5 лет назад +2

    Спасибо, что делаешь длинные ролики, а не огромное кол-во 5/10-минутных. Проще посмотреть 1 видео, чем 10 :) и тема очень актуальная

    • @mikeistp5736
      @mikeistp5736 5 лет назад +6

      Не соглашусь. Короткие ролики очень удобно воспринимать как раз потому что есть быстрая завершённость. Далеко не всегда хочется иметь дело с длинным потоком новых данных.

    • @chaostheory8706
      @chaostheory8706 5 лет назад

      @@mikeistp5736 это дело вкуса. Всегда будут те, кому нравится и те кому нет. Много людей записывают короткие ролики, а длинные - нет, поэтому автора видео хочется отдельно поблагодарить. Да и тема же - прохождение интервью, это не подразумевает изучить что-то с нуля, а скорее просто освежить память

    • @VladilenMinin
      @VladilenMinin  5 лет назад +1

      @@mikeistp5736 Я пояснял в телеграм почему буду стараться делать ролики длинными на ютубе. Все из-за его алгоритмов

  • @aleksandrglebik8033
    @aleksandrglebik8033 2 года назад

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

  • @ГульзанаКаткелдиева-ъ4ь

    Спасибо большое за крутую собранную информацию, дай бог пройду успешно свое собеседование после данного ролика

  • @НиколайКарданов-м6х

    Один из сильнейших веб-прогеров на ютубе на сегодняшний день. Спасибо за изобтлие годноты!

  • @SergioUkrAr
    @SergioUkrAr 5 лет назад +16

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

  • @andriihelever1793
    @andriihelever1793 4 года назад +1

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

  • @aleksandrmikhailov3255
    @aleksandrmikhailov3255 3 года назад +14

    Сколько же раз нужно нажать 'run' из контекстного меню шторма, чтобы запомнить уже хоткей))

  • @CJ19000
    @CJ19000 3 года назад

    Все четко, по факту, проффесионально, без воды, смотрел не отрываясь!

  • @ИннаОлефиренко-ф8ц
    @ИннаОлефиренко-ф8ц 5 лет назад +1

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

  • @virgo6324
    @virgo6324 4 года назад +1

    Супер видео! Низкий поклон и поддержка!

  • @ML-ns4fg
    @ML-ns4fg 2 года назад

    Спасибо! Как всегда кратко и по сути. Ждем еще

  • @evgeniyn1542
    @evgeniyn1542 5 лет назад +8

    Владилен ты красавчик, такой крутой и длинный ролик снял. :)

  • @kirillgavrilov9681
    @kirillgavrilov9681 4 года назад +2

    Спасибо, все это очень полезно, освежил знания по Js за полтора часа!

  • @РусланЗаманов-р9ж
    @РусланЗаманов-р9ж 3 года назад

    Мужик, добра тебе, очень информативно и понятно)

  • @BearVodkaAndValenki
    @BearVodkaAndValenki 4 года назад +3

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

  • @oksanazaiakina2583
    @oksanazaiakina2583 3 года назад

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

  • @haykaghababyan8348
    @haykaghababyan8348 4 года назад +1

    Спасибо большое за полезную видео, ждем новых!

  • @harrypolygon
    @harrypolygon 5 лет назад +1

    Блен, какой же офигенно качественный материал на твоем канале :)

  • @H1roHamada
    @H1roHamada 4 года назад +1

    Может кому понадобиться.
    Использование двойных кавычек и одинарных все же отличаются, их можно писать друг в друге, пример: "Java 'Script' ", если использовать одинаковые кавычки, то будет ошибка.

  • @xmnkn
    @xmnkn 4 года назад

    У тебя супер полезный контент и просто талант объяснять всё доходчиво!
    Я про все концепции, о которых идёт речь в видео, знала, но с удовольствием посмотрела для закрепления и выяснения нюансов.
    Огромное спасибо за этот труд, ты -- алмаз :)

  • @early_testing
    @early_testing 2 года назад

    Владилен, очень помогло твое видео при подготовке к собеседованию. Спасибо :)

  • @ВладиславК-п6э
    @ВладиславК-п6э 3 года назад +4

    На счет const не согласен их нельзя изменять в JS, просто когда записать в константу объект или массив там хранится не объект а ссылка на ячейку в памяти которая не меняется, а сам объект мы можем изменять;)
    В общем видео отличное чтоб быстро вспомнить все перед собеседованием)

  • @alexanderpilipenko9444
    @alexanderpilipenko9444 3 года назад +17

    Про типы данных не хватает объяснения, почему так странно работает сравнение с пустым массивом или объектом.

    • @BlueCell
      @BlueCell 2 года назад

      Пустой массив при попытке приведения к примитиву конвертируется в строку, с помощью join, по умолчанию там разделитель запятая, но так как массив пустой, то и получаем пустую строку, а пустая строка может преобразоваться к 0

  • @dmitrysmuschenko9487
    @dmitrysmuschenko9487 5 лет назад +3

    Спасибо огромное! Очень, очень вовремя:)

  • @АлексейК-м3л
    @АлексейК-м3л 4 года назад

    Крут! Учусь сейчас на курсах и нам дали тестовые вопросы для тестового собеса - ты осветил процентов 80!

  • @АндрейГурлев-т8в
    @АндрейГурлев-т8в 2 года назад

    Спасибо, все очень понятно. Хорошо посмотреть, что бы все вспомнить

  • @DagestanShop
    @DagestanShop 4 года назад

    четкое видео ! я пришел с java/c# в js и как раз данное видео именно то, что нужно чтобы войти в курс дела

  • @juliarekamie
    @juliarekamie 4 года назад

    величезна подяка за інформативність! 🐱‍👤🙌

  • @Bob3r1245
    @Bob3r1245 3 года назад +1

    Спасибо то что делитесь знаниями.

  • @maxeleron
    @maxeleron 3 года назад +1

    Очень много полезного материала, спасибо!

  • @TheYuvelir
    @TheYuvelir 4 года назад +1

    хоть три года работаю на js но всё же полезно иногда "пройтись по корням" :D вспомнил даже несоклько вещей, которые позабыл (т.к. адекватные программисты всегда обходят в своём коде эти джаваскриптовые грабли), но всё же знать о них нужно
    так что спасибо! ;)

  • @hatman8626
    @hatman8626 3 года назад

    Шикарное объяснение замыканий. Спасибо

  • @FillinGnom
    @FillinGnom 3 года назад

    Спасибо большое за столь полезный контент!

  • @АлександрЩербаков-о9щ

    29я минута когда вы объявляете:
    conat a = [1, 2, 3];
    const b = a;
    то у вас не "два массива", а один. Две переменные хранят в себе одну и туже ссылку в памяти. Ваш ответ бы вызвал доп. вопросы ан любом приличном собеседовании

  • @Eduard0213-x7p
    @Eduard0213-x7p 4 года назад

    sposibo ogromnoe ! kupil vash kurs po Excel ochen nravitsya no i slojno esli chestno !!

  • @kates9455
    @kates9455 3 года назад

    Какой же Вы крутой, Владилен! Спасибо огромное! После 4 месяцев первой работы как фулстак хочу перейти только на JS(React) и сейчас собираюсь готовиться к собеседованиям, поэтому Ваш урок оч оч оч полезен

    • @__kawaii
      @__kawaii 2 года назад

      А на бэке какой язык был?

  • @romanriezanov1704
    @romanriezanov1704 2 года назад

    Круто! Очень круто! Можно еще добавить про методы массивов, это частенько спрашивают на собесах

  • @gradusnikblea
    @gradusnikblea 4 года назад +1

    Спасибо большое, Каждое видео в котором есть польза я награждаю лайком, Твои видео все полезные)

  • @100whitefox
    @100whitefox 3 года назад +1

    Спасибо, полезно повторить концептуальную информацию!!

  • @kookaburru
    @kookaburru 5 лет назад +4

    Что касается примера
    let proto = {year: 2019}
    const myYear = Object.create(proto)
    proto = { year: 999}
    myYear.year // 2019
    тут все верно, потому что proto после присваивания указывает на {year: 999}, а myYear.__proto__ по-прежнему на {year: 2019}

    • @VladilenMinin
      @VladilenMinin  5 лет назад

      Да, согласен, но на сколько я помню в ранних версиях JS было иначе

    • @eugenenovikov671
      @eugenenovikov671 5 лет назад

      @@VladilenMinin в ранних версиях js и индексы у объекта были

    • @roman--s
      @roman--s 5 лет назад

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

  • @idu6349
    @idu6349 3 года назад

    Владилен, ты - боженька!:)

  • @ИринаКукушкина-т4п
    @ИринаКукушкина-т4п 3 года назад

    лучший видос для подготовки к собесу! спасибо!

  • @Roman23fe
    @Roman23fe 5 лет назад +41

    Нужно видео по более сложным собеседованиям на уровень middle/senior

    • @ohhisdudeness
      @ohhisdudeness 4 года назад +2

      Вопросы одни и те же чаще всего

    • @faust2134
      @faust2134 4 года назад +5

      @@ohhisdudeness на самом деле нет. даже на стронг джуна нужно знать shadow dom, промисы(а мидл должен уметь реализовать), get/set, написать свой bind и так далее. Говорю как человек который прошел 20+ собесов. Меня как джуна очень редко гоняли только по типам данных и var/let/const

    • @austinpowers7030
      @austinpowers7030 4 года назад +5

      @@faust2134 через пару часов собес, смотрю видео и читаю твой комментарий, знаю все, причем на практике, кроме написания своего bind'a (кто в здравом уме, а главное зачем будет этим заниматься?), но загуглил, понял что ничего особо сложного нет, я что уже мидл выходит?)

    • @PwnUrBadCock
      @PwnUrBadCock 4 года назад

      @@austinpowers7030 нет

    • @DevOps1
      @DevOps1 4 года назад

      @@faust2134 так после скольких собесов устроился?)

  • @inemiro
    @inemiro 5 лет назад +1

    отлично расписано, всё чётко, всё необходимое

  • @АнатолийКирсанов-п1д

    Отличный урок, никакой воды! Спасибо!

  • @TheJokerEXE
    @TheJokerEXE 3 года назад +1

    Спасибо автор! Держи подписку) Все в понятной и доступной форме

  • @4sARy
    @4sARy 4 года назад

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

  • @iakovalmazov8486
    @iakovalmazov8486 Год назад

    Спасибо Владилен! Можно в следующих выпусках масштабировать экран покрупнее, пожалуйста!

  • @1231-u7v
    @1231-u7v 3 года назад +1

    на 1:34:29 не меняется значение потому что ты создаешь объект myYear на основе старого объекта proto. чтобы заработало нужно перенести создание объекта myYear после переопределения объекта proto

  • @AB-fb1ve
    @AB-fb1ve 4 года назад +1

    Ну тут немножко неясность по поводу null и undefined... Как мы все знаем undefined в JS используется везде по умолчанию - все что не имеет значения есть undefined. null по сути, означает тоже самое, но если мы попытаемся получить доступ к переменной которая есть где-то там в глубинах кода и которую грязные рученки джуна еще не пытались крутить на кукане с говнокода, то мы получим undefined и будем знать, что эта переменная еще девственная и кроме самого интерпритатора JS ее никто не трогал. Если она вернет null, то мы должны понимать, что кто-то спецом присвоил ей null и менял этот код. Хотя по факту смысл во всем этом один и тот же. Раньше null использовался для обозначения обьектов, которые имеют null-ссылку или присвоения такого значения обьектам (да и сейчас в принципе не плохая практика). Легко проверить - попробуйте взять с DOM несуществующий элемент. Когда мы присваиваем обьекту null,то это означает, что мы приносим в жертву этот обьект, и когда из "преисподней" вылезет GC, он его скушает. Кароч - undefined это тип для самой JS, бобры-программисты всегда используют null везде...

  • @ОксанаГаращенко-д5р

    к теме замыканий и использовании let в цикле for (тайминг - 54:30)- посмотрела, как бабель преобразует эту функцию, он вынес setTimeout в функцию loop и в цикле вызывает loop), так что можно и с использованием let починить

  • @ШухратМахмудов-ь2х
    @ШухратМахмудов-ь2х 4 года назад

    Реально самый крутой гайдер по программированию, и слушать приятно

  • @Andrey53283
    @Andrey53283 4 года назад +1

    Владилен не объяснил (по крайней мере для меня) до конца почему пустой массив равен false. Гугл помог:
    Когда вы проверяете массив в условном операторе, он возвратит true
    if([ ]) console.log('true') // true
    Потому что он приводит объект к boolean: Boolean([]) => true
    Но! Когда вы сравниваете его с false, то интерпретатор сначала приводит массив к строке, а затем уже к boolean
    То есть:
    if([ ] == false) console.log('true?') // true
    перед тем как сравнить пустом массив с false он сначала преобразуется в строку, которая в свою очередь преобразуется в false
    [ ] => [ ].toString() // ' '
    ' ' => false
    false === false
    Надеюсь я правильно все понял и кому то помог)

  • @dimeliora
    @dimeliora 4 года назад

    Отлично раскидал работу оператора new! Прям по пунктам. Только я бы дополнил, что по спецификации new возвращает инициализированный объект только в том случае, если функция вернёт что-то, отличное от объекта. Всё, что кроме - игнорится. Поэтому в этом полифиле лучше сохранить вызов конструктора и проверить его значение перед возвратом.
    const instance = constructor.apply(obj, args);
    return (instance && typeof instance === 'object') ? instance : obj;

  • @iilyaa
    @iilyaa 4 года назад +1

    null возвращает object не потому что это неточность оператора. Это признано багом, который пока что не будут исправлять, так как имеется много зависимостей от этой "фичи"