Есть некоторые неточности и замечания по курсу, а некоторые вещи можно ещё проще рассказать. `` - вот такие обратные кавычки это не просто "литерал", а это "литерал шаблонной строки" или просто "шаблонный литерал", так же как [] - литерал массива (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 :)
Спасибо! Не совсем, впрочем, понятно тогда такое поведение: {} == {} // = false То есть не происходит сериализации {} в '[object Object]', а сравнение происходит по идентификаторам ссылок?
Спасибо, думал все эти недочеты Владилена вручную искать, так как видео и объяснение крайне скупое, а самое главное не объясняет почему так происходит (а это спрашивают на собесах), типа просто запомните
Ничего нового не узнал, но для повторения это идеально! Всё в одном месте собрано. Круто. А для тех кто только начинает изучать - это видео просто находка!
Ловите таймкоды: 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
в асинхронности не хватает несколько важных вещей: таски и микротаски, эвентлуп подробнее, туда же можно промисы, async-await, очень важно для понимания псевдоасихнронности js (что на клиенте, что в nodejs). Очень много ошибок с этим у ребят связано.
Владилен Минин одно другому не мешает, тут же «полное пособие». Понимание работы эвентлупа и асинхронности очень важный аспект js, поэтому и не хватает именно в этом видео. То что отдельно есть - отлично
При приведении типов во время сравнения через == важно помнить 2 вещи которые помогут предсказать результат 1. Представьте что вы приводите все к Number, типа Number(a) == Number(b) 2. Помните что undefined, null, {} и Symbol - это не значения - это типы. По сути по значению тут вообще нечего сравнивать так как значений нет. Вот почему []==false => true Number([]) - 0, Number(false) - 0 Но {}==false => false {} - это тип, тут нет значени, null==false => false null - это тип, тут нет значени, Я не уверне в том насколько это близко к правде, но это помогает запомнить все эти задачи с сравнением
@@nickstojanovic9663 в нормальных конторах прежде идет собеседование, потом уже тестовое. В очень нормальных конторах идет сначала собеседование, потом тестовое, а потом второе собеседование.
@@austinpowers7030 в нормальные конторы должно висеть по 300 апликантов и с каждым из них никто проводить собеседование не будет, первым всегда должен идти тест если контора действительно нормальная
Владилен, считаю, что при объяснении setTimeout в цикле нужно было бы также упомянуть, что при использовании let на каждую итерацию создается абсолютно новая переменная, в то время как переменная, объявленная через var, -- одна на весь цикл, и при каждой итерации изменяется только ее значение, в чем, собственно, и кроется фишка этого примера. А так все очень круто и доступно, спасибо!
9:48 Добавлю от себя об одном очень важном аспекте разницы между null и undefined: в случае, если у функции есть параметр по умолчанию, и вызвать эту функцию, передав значение данного параметра undefined, то будет использован параметр по умолчанию, а если null - тогда null. Например: const fn = (value = 5) => value; console.log(fn(), fn(undefined), fn(null)); // 5 5 null
Владилен, если Вы читаете это - моя огромная благодарность! Я успешно прошёл своё первое техинтервью и получил свою первую работу, главным образом - благодаря урокам из Вашего плейлиста "Сложный JavaScript простым языком". Данное видео также очень помогло повторить изученное.
Смотрел твой курс по Vue/Nuxt, где ты периодически тихонько матерился в микрофон, когда что-то не получалось. Было ощущение, что просто забыл вырезать)) Всё ждал, будет ли здесь такое)) А в целом - огромное спасибо, отличная подборка!
Спасибо огромное! Ваш труд очень помогает! Замечательная подача, нет "воды". Отличное пособие чтобы повторять язык JS в дороге или на выходных в свободные часы.
Как всегда ,Владилен лучший. Очень понятно объясняет, всё по полочкам. Единственное как мне кажется не хватает одной главы про промисы и может быть ещё одной главы про работу с сервером(GET,POST,PUT,DELETE), но это моё субъективное мнение. Спасибо ещё раз за твой контент!
Спасибо большое, за доступное разъяснение JS!!! Только что TH-cam предложил ваши видео, теперь смогу точно разобраться в JS!!! Спасибо большое ещё раз, вы супер!
Контент ОГОНЬ!! Как раз для тех (как я ), кто думал, что изучил JS и пошел на собесы, и его там резко опускают на землю, а этот ролик проясняет очень многие из заданных там вопросов. Автору огромная благодарность!!!
Владилен, спасибо большое за видеоролик. Вчера был на собеседовании, и меня спрашивали буквально по каждой теме из этого ролика. Твой ролик очень мне помог. Очень хороший материал для подготовки к собесу. Обращаюсь к тем, кто будет проходить собесы, помимо этих тем повторите темы с промисами, а также подробнее рассмотрите концепт работы Event Loop
Хороший контент, по нему готовлюсь к собесу, в принципе многое знаешь, но иногда не всегда помнишь, что то забывается, что то на автомате делается - важно напомнить себе и проверить свои знания. Большое спасибо тебе
Супер, как раз смотрел твои уроки по Ангуляру, дай думаю на ютубе чет гляну, а тут вот на это видео наткнулся да еще и материал интересный и застрял))), спасибо)
Не соглашусь. Короткие ролики очень удобно воспринимать как раз потому что есть быстрая завершённость. Далеко не всегда хочется иметь дело с длинным потоком новых данных.
@@mikeistp5736 это дело вкуса. Всегда будут те, кому нравится и те кому нет. Много людей записывают короткие ролики, а длинные - нет, поэтому автора видео хочется отдельно поблагодарить. Да и тема же - прохождение интервью, это не подразумевает изучить что-то с нуля, а скорее просто освежить память
Спасибо за уроки. На русском ютубе можно сказать уникальный контент делаешь! Очень надеюсь что не забросишь канал и будет ещё больше роликов. В том числе очень буду ждать по vue 3. Скоро кстати релиз)
хоть три года работаю на js но всё же полезно иногда "пройтись по корням" :D вспомнил даже несоклько вещей, которые позабыл (т.к. адекватные программисты всегда обходят в своём коде эти джаваскриптовые грабли), но всё же знать о них нужно так что спасибо! ;)
Спасибо за полезный материал, как и во всех ваших видео - четкий, доступный материал, без воды в приятной манере изложения материала, которую легко воспринимать на слух.
У тебя супер полезный контент и просто талант объяснять всё доходчиво! Я про все концепции, о которых идёт речь в видео, знала, но с удовольствием посмотрела для закрепления и выяснения нюансов. Огромное спасибо за этот труд, ты -- алмаз :)
Какой же Вы крутой, Владилен! Спасибо огромное! После 4 месяцев первой работы как фулстак хочу перейти только на JS(React) и сейчас собираюсь готовиться к собеседованиям, поэтому Ваш урок оч оч оч полезен
'Однако, всё было бы хорошо, но это JavaScript...' (14:10) - это шедевр! Я как только не называл жабу, когда пытался изучить (понять!) как он работает. Эта фраза гениальна! Огромнейшая благодарность за видео и ваши труды. Очень много понял и заново переосмыслил.
Отлично раскидал работу оператора new! Прям по пунктам. Только я бы дополнил, что по спецификации new возвращает инициализированный объект только в том случае, если функция вернёт что-то, отличное от объекта. Всё, что кроме - игнорится. Поэтому в этом полифиле лучше сохранить вызов конструктора и проверить его значение перед возвратом. const instance = constructor.apply(obj, args); return (instance && typeof instance === 'object') ? instance : obj;
Спасибо большое, а можно сделать продолжение про паттерны программирования, какие нибудь вопросы по html, css ещё было бы желательно и если можно вопросы на собесе по angular или react
нас уже 10 тысяч!!!! 10 тысяч людей, которые узнали что-то новое! это целый поселок городсrого типа, в котором каждый может рассказать тебе о контексте и наследовании в js))
NaN это действительно number, number не обязан представлять только цифры. NaN это представитель чисел с плавающей запятой, поддерживается на аппаратном уровне, в компьютерах есть специальные процессоры для чисел float и NaN один из возможных его результатов.
(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'.
На счет const не согласен их нельзя изменять в JS, просто когда записать в константу объект или массив там хранится не объект а ссылка на ячейку в памяти которая не меняется, а сам объект мы можем изменять;) В общем видео отличное чтоб быстро вспомнить все перед собеседованием)
Позабавило, когда автор переассайнил переменную proto новым обьектом и удивлялся, почему ссылка на старый не поменялась) Но, спасибо за труд! Такие обзорные видео очень полезны.
Эксклюзивный контент на моем Boosty: boosty.to/vladilen
Исходники тут: t.me/js_by_vladilen/131
Спустя уже почти 4 года видео все еще актуально и все еще проясняет очень многое. Спасибо огромное Владилен, за ваши старания в нашу пользу.
Но актуальность стоит проверять перед собесом, например типов уже 8, bigInt не хватает
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 Асинхронность
Есть некоторые неточности и замечания по курсу, а некоторые вещи можно ещё проще рассказать.
`` - вот такие обратные кавычки это не просто "литерал", а это "литерал шаблонной строки" или просто "шаблонный литерал", так же как [] - литерал массива (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 :)
Дай Б-г тебе здоровья, добрый человек.
Спасибо! Не совсем, впрочем, понятно тогда такое поведение:
{} == {} // = false
То есть не происходит сериализации {} в '[object Object]', а сравнение происходит по идентификаторам ссылок?
@@xxxxrat конечно
Кто ты воин?) У вас есть статьи или что нибудь? С удовольствием бы почитал.
Спасибо, думал все эти недочеты Владилена вручную искать, так как видео и объяснение крайне скупое, а самое главное не объясняет почему так происходит (а это спрашивают на собесах), типа просто запомните
Ничего нового не узнал, но для повторения это идеально! Всё в одном месте собрано. Круто. А для тех кто только начинает изучать - это видео просто находка!
Ловите таймкоды:
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
Владилен расскажи по NodЕ req/res и т.д. нигде толком ничего нет
У меня на канале есть нода за час. Там и проясняю
в асинхронности не хватает несколько важных вещей: таски и микротаски, эвентлуп подробнее, туда же можно промисы, async-await, очень важно для понимания псевдоасихнронности js (что на клиенте, что в nodejs). Очень много ошибок с этим у ребят связано.
@@inemiro На канале есть более подробные видео по этим темам
Владилен Минин одно другому не мешает, тут же «полное пособие». Понимание работы эвентлупа и асинхронности очень важный аспект js, поэтому и не хватает именно в этом видео. То что отдельно есть - отлично
как же приятно слушать) Все ясно, просто, хорошие примеры, без воды, в комфортном темпе. Спасибо за уроки!
Вот только varyable произносится немного по другому
При приведении типов во время сравнения через == важно помнить 2 вещи которые помогут предсказать результат
1. Представьте что вы приводите все к Number, типа Number(a) == Number(b)
2. Помните что undefined, null, {} и Symbol - это не значения - это типы. По сути по значению тут вообще нечего сравнивать так как значений нет.
Вот почему
[]==false => true Number([]) - 0, Number(false) - 0
Но
{}==false => false {} - это тип, тут нет значени,
null==false => false null - это тип, тут нет значени,
Я не уверне в том насколько это близко к правде, но это помогает запомнить все эти задачи с сравнением
Ты в моём личном топе, напару с диманом из ИТ камасутры. Респект вам за годный контент.
@Metal Head Откуда такая агрессия? Тебя недолюбили?
@@MakcoH1998 скорее перелюбили, во все щели
Вот прям +
Сенсея называть бы с большой буквы)
+++
"Js за час" здорового человека)
Этого не хватит
@@ЕвгенийПанкратов-г5ь Если ты сделал тестовое задание хорошо, то 70 процентов вопросов на собеседовании скорее всего отвалятся
@@nickstojanovic9663 в нормальных конторах прежде идет собеседование, потом уже тестовое. В очень нормальных конторах идет сначала собеседование, потом тестовое, а потом второе собеседование.
@@austinpowers7030 я говорил о собственном опыте, рассматривая исключительно удаленку. Но спасибо за дополнение.
@@austinpowers7030 в нормальные конторы должно висеть по 300 апликантов и с каждым из них никто проводить собеседование не будет, первым всегда должен идти тест если контора действительно нормальная
Владилен, считаю, что при объяснении setTimeout в цикле нужно было бы также упомянуть, что при использовании let на каждую итерацию создается абсолютно новая переменная, в то время как переменная, объявленная через var, -- одна на весь цикл, и при каждой итерации изменяется только ее значение, в чем, собственно, и кроется фишка этого примера. А так все очень круто и доступно, спасибо!
9:48 Добавлю от себя об одном очень важном аспекте разницы между null и undefined: в случае, если у функции есть параметр по умолчанию, и вызвать эту функцию, передав значение данного параметра undefined, то будет использован параметр по умолчанию, а если null - тогда null. Например:
const fn = (value = 5) => value;
console.log(fn(), fn(undefined), fn(null)); // 5 5 null
Чувак, ты находка в русском ютубе
Автору видео желаю удачу и чтоб у него все исполнялось, ведь просто так выпускать видео и такие хорошие не все могут
Владилен, если Вы читаете это - моя огромная благодарность! Я успешно прошёл своё первое техинтервью и получил свою первую работу, главным образом - благодаря урокам из Вашего плейлиста "Сложный JavaScript простым языком". Данное видео также очень помогло повторить изученное.
Привет) Поздарвяю тебя, так держать!) Если не секрет, сколько у тебя заняло обучение, и насколько трудные были вопросы на интервью?
Смотрел твой курс по Vue/Nuxt, где ты периодически тихонько матерился в микрофон, когда что-то не получалось. Было ощущение, что просто забыл вырезать)) Всё ждал, будет ли здесь такое)) А в целом - огромное спасибо, отличная подборка!
Спасибо огромное! Ваш труд очень помогает! Замечательная подача, нет "воды". Отличное пособие чтобы повторять язык JS в дороге или на выходных в свободные часы.
Супер подача. Без воды, кратко, хорошие примеры. Спасибо за ваши уроки и курсы!
Я очень сильно тебя благодарю за такую возможность подойти ближе к собеседованию!))
Как всегда ,Владилен лучший. Очень понятно объясняет, всё по полочкам. Единственное как мне кажется не хватает одной главы про промисы и может быть ещё одной главы про работу с сервером(GET,POST,PUT,DELETE), но это моё субъективное мнение. Спасибо ещё раз за твой контент!
Спасибо большое, за доступное разъяснение JS!!! Только что TH-cam предложил ваши видео, теперь смогу точно разобраться в JS!!! Спасибо большое ещё раз, вы супер!
Прошла уже собес?
Спасибо большое! Один из лучших русскоязычных каналов по теме на ютубе
очень познавательный канал и автор объясняет все очень простыми и понятными словами. Даже на 1.5х все очень понятно
В JavaScript есть 8 основных типов данных.
null,
undifined,
boolean,
number,
string,
symbol
object
bigint. ( для целых чисел произвольной длины. )
На вопрос:
Какие типы данных существуют в js (Стандарт языка ES6)
Мне чатгпт ответил:
boolean, string, number, undefined, null, symbol😅
Владилен, всё с толком объясняет. Понятно и доходчего. Спасибо за нелёгкий труд. 💪
Контент ОГОНЬ!! Как раз для тех (как я ), кто думал, что изучил JS и пошел на собесы, и его там резко опускают на землю, а этот ролик проясняет очень многие из заданных там вопросов. Автору огромная благодарность!!!
Прекрасная подача материала! Получил большое удовольствие от просмотра. Благодарю. :)
Очередное собеседование и я здесь) Спасибо, Владилен!
С вами я сильно продвинул свой скилл по js . Большое вам спасибо за столь полезный контент.
Привет, сделай список топовых вопросов на собеседовании, а также ответов на них. Это будет очень круто.
Отличное объяснение тем. Особенно понравилось объяснение замыкания, c этим всегда были проблемы. Большое спасибо за труд.
1:04:04 Что такое контекст? "Я в уме - ну это тоже самое что и scope".
Владилен: Зачастую контекст часто путают с таким понятием как scope..
лол))
аналогично
Я нубас полнейший!) Как же черт возьми круто! Владилен, огромное человеческое спасибо! Топ контент!
Владилен, спасибо большое за видеоролик. Вчера был на собеседовании, и меня спрашивали буквально по каждой теме из этого ролика. Твой ролик очень мне помог. Очень хороший материал для подготовки к собесу. Обращаюсь к тем, кто будет проходить собесы, помимо этих тем повторите темы с промисами, а также подробнее рассмотрите концепт работы Event Loop
Про ивентлуп на канале отдельный ролик
Спасибо большое за крутую собранную информацию, дай бог пройду успешно свое собеседование после данного ролика
Владилен, спасибо огромное за твой труд.
Да прибудет с тобой сила Владилен)Спасибо)
Большое спасибо за краткий и практически полезный разбор JS на примерах. Случайно к Вам попал, но это именно то, что надо :)
Хороший контент, по нему готовлюсь к собесу, в принципе многое знаешь, но иногда не всегда помнишь, что то забывается, что то на автомате делается - важно напомнить себе и проверить свои знания. Большое спасибо тебе
Супер, как раз смотрел твои уроки по Ангуляру, дай думаю на ютубе чет гляну, а тут вот на это видео наткнулся да еще и материал интересный и застрял))), спасибо)
Спасибо Владилен! Можно в следующих выпусках масштабировать экран покрупнее, пожалуйста!
Спасибо, что делаешь длинные ролики, а не огромное кол-во 5/10-минутных. Проще посмотреть 1 видео, чем 10 :) и тема очень актуальная
Не соглашусь. Короткие ролики очень удобно воспринимать как раз потому что есть быстрая завершённость. Далеко не всегда хочется иметь дело с длинным потоком новых данных.
@@mikeistp5736 это дело вкуса. Всегда будут те, кому нравится и те кому нет. Много людей записывают короткие ролики, а длинные - нет, поэтому автора видео хочется отдельно поблагодарить. Да и тема же - прохождение интервью, это не подразумевает изучить что-то с нуля, а скорее просто освежить память
@@mikeistp5736 Я пояснял в телеграм почему буду стараться делать ролики длинными на ютубе. Все из-за его алгоритмов
Очень полезно,чтобы освежить знания и что-то вспомнить.Спасибо,Владилен!
Владлен! Спасибо за твой труд! То, что ты делаешь мне очень нравится и помогает!
Все четко, по факту, проффесионально, без воды, смотрел не отрываясь!
Спасибо за уроки. На русском ютубе можно сказать уникальный контент делаешь! Очень надеюсь что не забросишь канал и будет ещё больше роликов. В том числе очень буду ждать по vue 3. Скоро кстати релиз)
Не забросил)
Спасибо, Владилен! Очень много классного контента на твоем канале. Простыми словами о сложном!!!
Спасибо большое за полезную видео, ждем новых!
Вселенское Вам спасибо! Очень все чётко изложено )
Большое спасибо за такие уроки, все понятно и становится по своим полочкам в голове.
Спасибо, все это очень полезно, освежил знания по Js за полтора часа!
Супер видео! Низкий поклон и поддержка!
sposibo ogromnoe ! kupil vash kurs po Excel ochen nravitsya no i slojno esli chestno !!
Владилен ты красавчик, такой крутой и длинный ролик снял. :)
Спасибо! Как всегда кратко и по сути. Ждем еще
Спасибо за видос, что-то освежил в памяти, что-то узнал новое.
хоть три года работаю на js но всё же полезно иногда "пройтись по корням" :D вспомнил даже несоклько вещей, которые позабыл (т.к. адекватные программисты всегда обходят в своём коде эти джаваскриптовые грабли), но всё же знать о них нужно
так что спасибо! ;)
Крут! Учусь сейчас на курсах и нам дали тестовые вопросы для тестового собеса - ты осветил процентов 80!
Спасибо за полезный материал, как и во всех ваших видео - четкий, доступный материал, без воды в приятной манере изложения материала, которую легко воспринимать на слух.
четкое видео ! я пришел с java/c# в js и как раз данное видео именно то, что нужно чтобы войти в курс дела
Спасибо огромное! Очень, очень вовремя:)
Мужик, добра тебе, очень информативно и понятно)
Круто! Очень круто! Можно еще добавить про методы массивов, это частенько спрашивают на собесах
Спасибо, все очень понятно. Хорошо посмотреть, что бы все вспомнить
Спасибо то что делитесь знаниями.
Владилен, очень помогло твое видео при подготовке к собеседованию. Спасибо :)
01:34:23 всё логично - здесь Вы меняете значение локальной ссылки на прототип, а не сам прототип.
Спасибо, полезно повторить концептуальную информацию!!
У тебя супер полезный контент и просто талант объяснять всё доходчиво!
Я про все концепции, о которых идёт речь в видео, знала, но с удовольствием посмотрела для закрепления и выяснения нюансов.
Огромное спасибо за этот труд, ты -- алмаз :)
А ты изумруд))!!
Сколько же раз нужно нажать 'run' из контекстного меню шторма, чтобы запомнить уже хоткей))
Блен, какой же офигенно качественный материал на твоем канале :)
Благодарю, стараюсь)
величезна подяка за інформативність! 🐱👤🙌
Один из сильнейших веб-прогеров на ютубе на сегодняшний день. Спасибо за изобтлие годноты!
Очень много полезного материала, спасибо!
Какой же Вы крутой, Владилен! Спасибо огромное! После 4 месяцев первой работы как фулстак хочу перейти только на JS(React) и сейчас собираюсь готовиться к собеседованиям, поэтому Ваш урок оч оч оч полезен
А на бэке какой язык был?
'Однако, всё было бы хорошо, но это JavaScript...' (14:10) - это шедевр! Я как только не называл жабу, когда пытался изучить (понять!) как он работает. Эта фраза гениальна! Огромнейшая благодарность за видео и ваши труды. Очень много понял и заново переосмыслил.
Реально самый крутой гайдер по программированию, и слушать приятно
Как раз готовлюсь к грядущим собеседованиям. Спасибо за видео!
Удачного прохождения интервью )
Шикарное объяснение замыканий. Спасибо
Спасибо большое за столь полезный контент!
Спасибо автор! Держи подписку) Все в понятной и доступной форме
лучший видос для подготовки к собесу! спасибо!
Очень помогло вспомнить теорию, освежить знания тех вещей, которые не очень юзабельны в моём случае) Спасибо, собес пройдет на "УРА"
Лучший видос, чтобы освежить собесный js!
Отлично раскидал работу оператора new! Прям по пунктам. Только я бы дополнил, что по спецификации new возвращает инициализированный объект только в том случае, если функция вернёт что-то, отличное от объекта. Всё, что кроме - игнорится. Поэтому в этом полифиле лучше сохранить вызов конструктора и проверить его значение перед возвратом.
const instance = constructor.apply(obj, args);
return (instance && typeof instance === 'object') ? instance : obj;
Спасибо большое, Каждое видео в котором есть польза я награждаю лайком, Твои видео все полезные)
Стал уже разработчиком?
Спасибо большое, а можно сделать продолжение про паттерны программирования, какие нибудь вопросы по html, css ещё было бы желательно и если можно вопросы на собесе по angular или react
Отличное видео часто пересматриваю перед собедованием
ЛАЙК ОТ СЕООНЛИ - кодера-легенды
огромное спасибо! Желаю успехов
нас уже 10 тысяч!!!! 10 тысяч людей, которые узнали что-то новое! это целый поселок городсrого типа, в котором каждый может рассказать тебе о контексте и наследовании в js))
Поздравляю нас всех, замечательная цифра)
NaN это действительно number, number не обязан представлять только цифры. NaN это представитель чисел с плавающей запятой, поддерживается на аппаратном уровне, в компьютерах есть специальные процессоры для чисел float и NaN один из возможных его результатов.
(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'.
Спасибо! Как раз понадобился список вопросов для собеседования )
Спасибо, Владилен! Очень познавательно и не нужно тратить время на книгу.
На счет const не согласен их нельзя изменять в JS, просто когда записать в константу объект или массив там хранится не объект а ссылка на ячейку в памяти которая не меняется, а сам объект мы можем изменять;)
В общем видео отличное чтоб быстро вспомнить все перед собеседованием)
отлично расписано, всё чётко, всё необходимое
Позабавило, когда автор переассайнил переменную proto новым обьектом и удивлялся, почему ссылка на старый не поменялась) Но, спасибо за труд! Такие обзорные видео очень полезны.
Дар преподавателяо от Бога у этого человека)) если б вы написали книгу по js я купил бы ее
Владилен, ты - боженька!:)