JavaScript: ошибки, которые вы чаще всего допускаете в изучении!

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

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

  • @Howtogoit
    @Howtogoit  3 года назад +19

    Товарищи, прошу прощения за не самое лучшее качество видео, звука и подачу информации =)
    Это был один из первых роликов, поэтому я еще не понимал как сделать хорошо и с правильной динамикой.
    Надеюсь новые видео вам понравятся больше!

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

      HTML это 100% работы =))

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

      видео пушка, как и твой канал в целом, думаю скоро у тебя будут сотни тысяч подписчиков ))

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

      Норм, усложняй а-то пока скучно

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

      ruclips.net/video/nMcnkkwAg1s/видео.html на 7.45 почему на вопрос не дал правильный ответ?

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

      Объясните пожалуйста. Я понял значение функции [].at(). НО Почему бы просто не сделали так чтобы можно было в индексах использовать отрицательные цифры?

  • @fantast2568
    @fantast2568 3 года назад +91

    на 6:59 ошибочка, ноль возвращается потому что первое ложное

    • @Howtogoit
      @Howtogoit  3 года назад +10

      Дааа, ты абсолютно прав! Благодарность за внимательность)

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

      @@Howtogoit нужно видео исправить

    • @Dimaaasik
      @Dimaaasik 3 года назад +11

      Злой автор сломал этим мне мозг)

    • @АндрейИванов-ц3к2л
      @АндрейИванов-ц3к2л 3 года назад +3

      я как олень полез в ide всё это дело проверять, потом ещё раз 5 пересматривал

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

      @@АндрейИванов-ц3к2л бывает)

  • @NotasCicero
    @NotasCicero 3 года назад +11

    Потрясающая подача! Продолжай в том же духе. Я смотрю, канал активно растёт - это радует!

  • @demimurych1
    @demimurych1 Год назад +7

    То что Вы рассказываете, нередко является придуманной аналогией которая не имеет отношению к языку JS. И в этом не было бы ничего плохого, если бы Ваши аналогии работали для всего языка одинаково. А не тут работает а тут все иначе.
    00:06:02 *Логическое И или логическое ИЛИ*
    Объяснение автора не только не соответствует спецификации, но еще и запутывает человека.
    Согласно спецификации конструкция подобной этой:
    const resultA = 40 && 2 || 33
    будет обрабатываться согласно следующему алгоритму:
    весь код будет интерпретирован как assigment expression ( resultA = 40 && 2 || 33 )
    то есть некоторое выражение которое нужно вычислить. Что мы пониманием интуитивно.
    Далее JS выделит выражение: 40 && ( NextExpression )
    И применит к нему следующие шаги:
    1. Пусть lval будет результатом вычисления выражения (40)
    согласно спецификации 40 - числовой литерал который вернет сам себя. то есть lval === 40
    2. Пусть lBool будеь результатом выполнения - ToBolean( lval ) где:
    функция ToBolean возвращает либо true либо false в зависимости от того что в нее передали:
    2.1 если передали true или false, то вернуть что передали.
    2.2 если передали +0, -0, 0, NaN, null, undefined то вернуть false
    2.3 все прочее - вернуть true.
    То есть ToBolean от числа 40: ToBoolean( 40) => True
    3. Если Шаг 2 вернул False то прекратить вычисление и вернуть lval
    В противном случае вычислить NextExpression
    Та как Шаг 2 вернул True. То JavaScript идет дальше и теперь вычисляет выражение:
    2 || ( Next Expression )
    Что приведет к выполнению шагов:
    Шаг 1 и Шаг 2 идентичен тому что выше.
    3. Если шаг 2 вернул true то завершить вычисления и вернуть lval
    Так как выражение (2) при его вычисление даст 2, а передача жтого результата в ToBoolean вернет true,
    то цепочка вычислений прирывается. А это означает что изначальный идентификатор resultA связывается со значением 2.
    Почему это правильно, а то что сказал автор видео - не правильно.
    Потому что для случая выражения
    const resultB = ( 4 * 2 ) && ( 3* 6)
    выражение 3*6 будет вычислено только в том случае, если ToBoolean от (4 * 2) вернет true.
    То есть дополнительная нагрузка на интерпретатор будет только тогда когда первая часть выражения вернет то, что позволяет оператору && принят решение о выполнении следующей части.
    То есть в случае const resultB = ( 4 * 0 ) && ( 3* 6) JavaScript никогда даже разбирать на части выражение, которое идет за && не начнет.
    То есть результат Logical AND Expression в JavaScript правильно описывать так:
    ( A ) && ( B ) && ( C ) && ( D ) .... && ( n );
    преобразовывается в
    ( A ) && ( все что дальше)
    и если результат вычисления от ToBoolean ( A ) === true то продолжить вычислять все что идет правее.
    Если false вернуть результат вычисления.

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

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

  • @thistalehasahint
    @thistalehasahint 10 месяцев назад +1

    Если программист не знал 1 функцию arr.reduce(, это не значит, что его нужно посылать, и то что он не подходит, так можно любого программиста послать, просто потому что он чего то не знает! Как вариант спрашивать его какую то редкую или не очевидную фичу js и посылать якобы по профнепригодности

  • @kookaburru
    @kookaburru 3 года назад +65

    Он сложный, потому что народ сразу лезет в reduce вместо того чтобы понять как работает цикл for :)

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

      Если ты про момент на 9:03 то поздравляю, ты прочитал мои мысли, я сразу про reduce подумал , хотя там сложного то ничего и нет, аккумулятор в виде 0, и каждой итерацией считаем сумму корзины и соответственно потом возвращаем аккумулятор, делов то

    • @шоисломтолибов-х5л
      @шоисломтолибов-х5л 11 месяцев назад

      @@awenn2015ой как замучали эти методы меня. сидел над фильтром, редюсом и мапом. за 2 дня научился их юзать))

    • @Oooohhh_maaaan
      @Oooohhh_maaaan 9 месяцев назад +1

      Я не умею использовать редюс гы

    • @sjdjjsjsjs3991
      @sjdjjsjsjs3991 3 месяца назад

      Это да, как то встречал макак, которые даже сортировку через цикл сделать не могут

    • @Im-not-meat
      @Im-not-meat 3 месяца назад

      Ахах рил 😂

  • @sodz5144
    @sodz5144 4 месяца назад +1

    8:24 Невозможно знать всё. Да и не нужно, ты никогда не знаешь с чем будешь работать. Новые стандарты очень долго внедряются(прям иногда десятилетиями). Я так скажу, дофига проектов до сих пор на Node.JS младше 16, а уже 22("Это для примера) и там оох какой разный синтаксис.

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

    Завалился на 0 && 2.
    Не сразу понял, а потом как понял!
    Это равносильно: false и 2
    Второе значение не будет проверяться, так как первое вернуло false и проверка останавливается
    (как заметили другие в комментариях - в ролике оговорка)
    Нельзя сказать, что я не знал, но завалил проверку, так как не сообразил сразу.

    • @SLAVA_INKOGNITO
      @SLAVA_INKOGNITO 5 месяцев назад

      После твоего коммента и мне стало всё понятно, 👍

  • @artemgoncharuk5174
    @artemgoncharuk5174 Год назад +1

    Да на 7:00 ошибка в комментарии, "конечно же ноль, возвращается первое истиное", 0 && 2 должно вернуться не первое истиное, а последнее истиное или первое встретевшееся ложное, поскольку 0 логически считается ложное, он и возвращается.

  • @maksimzolotoi3379
    @maksimzolotoi3379 3 года назад +12

    Посмотрите на все фреймворки и выберите реакт, если не хотите потом искать работу две недели 😂

  • @sodz5144
    @sodz5144 4 месяца назад

    7:15 Прикольная задачка. Да, вопрос в порядке выполнения и области видимости. Подсказка: Что бы выводило по порядку, используйте "let"

  • @ПавелВасильев-ц4м
    @ПавелВасильев-ц4м 3 года назад +1

    Классное видео, благодаря ему я доработал код.
    Из объекта выделял переменные, каждую отдельно, а потом еще и удалял их из объекта через delete. 4 строчки кода сжал до одной:
    const { driver, car, ...contract } = currentContract
    Спасибо!

  • @ivanrar1930
    @ivanrar1930 6 месяцев назад

    из какого фильма взят отрывок в начале
    ?

  • @dzanis79
    @dzanis79 3 года назад +2

    let потому и нужен что-бы скрыть её там где это необходимо,а не пихать везде подряд.Например в цикле for лучше всего использовать let

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

    Ееее кремниева долина! Обожааю

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

    7:01 возвращается не первое истинное, а первое ложное, поэтому и вернулся ноль, ноль - это фолси, которое && видит как фолс

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

    12:01 можно же деструктуризировать в круглых скобках (где ф-я принимает параметр) и сделать еще на одну строчку меньше

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

      Но он станет менее читабельным

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

    9:35 если элементов в массиве будет несколько сотен тысяч, решение через for, как раз таки, будет более приоритетным нежели reduce

  • @kalobyte
    @kalobyte 15 дней назад

    6:39 эти операторы не должны возвращать никаких чисел, двойные логические операторы работают на уровне 1 и 0
    точнее должны работать, но яваскрипт это убогое поделие, поэтому там все через жопу

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

    Спасибо. Интересно. С юмором

  • @МаксимНырков-у6г
    @МаксимНырков-у6г 3 года назад +4

    я помню, совсем недавно...
    был вопрос на интервью - посчитать корзину и вывести total всех цен...
    так вот, я сделал через reduce и был собой доволен, но!!!! мне сказали, что .reduce работает дольше for()... поэтому я плохо знаю оптимизацию js...
    ппц...
    Дорогой автор, мне интересно Ваше мнение!

    • @ra-dro
      @ra-dro 3 года назад

      Как по мне, reduce сложная функция, но for ещё хуже. В последней, наверное, гораздо меньше выразительности. Если в задачи было условие по поиску самого быстрого решения - значит сказали всё правильно. Если же нет, то замечание выглядит странным.

    • @МаксимНырков-у6г
      @МаксимНырков-у6г 3 года назад

      @@ra-dro нет, посто было посчитать итоговое. Сделал через редюс. Но сразу докалупались, что это долго... И так не пишут, а пишут через фор, т.к быстрее работает. Но не стояла задача сделать максимально быстро, а просто посчитать числа

    • @ra-dro
      @ra-dro 3 года назад +2

      @@МаксимНырков-у6г Значит люди сами не знают, чего хотят, лишь бы приколупаться. Превентивная оптимизация в угоду читаемости - двойное зло. (:

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

    я выбрал фреймворк Реакт, а потом оказалось, что это библиотека, что мне делать

  • @АлександрПанков-к6л
    @АлександрПанков-к6л 3 года назад +1

    Видос огонььь!

  • @via754
    @via754 Год назад +2

    Ну получается что многое нужно учить не для того, что бы использовать, а для того, что бы пройти собеседование 🤦‍♂️

    • @ThomasBlack452
      @ThomasBlack452 9 месяцев назад

      Я чет тоже немного засомневался. Я конечно в ИТ не работал, не знаю, но на мой взгляд главное уметь делать то, чем ты будешь заниматься на работе. А если ты какие-то мелочи в этом не совсем понимаешь (ну мб для перехода к другим задачам нужны эти мелочи), то тебе сможет подсказать коллега.
      С другой стороны надо как-то отсеивать тех, кто не сможет выполнять то, что требуется.
      Я могу пример с музыкой привести. Учил самостоятельно и разбирался долго. Учил всё, от самих нот до сведения. Округлим до 10 лет, условно (учиться можно всю жизнь, в принципе). И я могу со всей уверенностью сказать, что минимум половина знаний вообще не используется и вряд ли пригодится. Это мб раньше надо было знать, как работает сайд-чейн компрессия в мелочах, сейчас же есть готовые плагины, которые в пару кликов это делают. Подозреваю, что с программированием примерно то же самое.

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

    3:46 где такую картинку взять по Git

    • @АндрейЯценко-т5я
      @АндрейЯценко-т5я 3 года назад +3

      С этого ролика) Ставишь на паузу , скриншотишь, сохраняешь :)

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

      @@АндрейЯценко-т5я ахах

  • @МаксимНырков-у6г
    @МаксимНырков-у6г 3 года назад +2

    Кстати, а можете сделать видео по правилу "правильного кода"?
    как написать код меньше, быстрее, какой будет работать быстрее
    даже if else мгоние пишут абы как... а ведь его можно писать ИНАЧЕ и короче

  • @МаксимАндросов-с8н
    @МаксимАндросов-с8н 3 года назад +3

    Большое спасибо за материал!!! Очень хорошая подача )

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

    в reduce отсутствует проверка на размер массива. с пустым массивом оно крашнет

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

    Классные видео!

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

    9:10
    в цикле фор разве еденичку от длинны корзины не надо отнять?)

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

      Не надо.

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

    Спанчбоб - мой любимыый мульт)) Лайк!

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

    6:05 я ещё люблю их называть операторами замыкания

  • @Dai_Fudo-Dev
    @Dai_Fudo-Dev 3 года назад

    Огромное спасибо.

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

    8:40 так то есть люди которые все еще пинут код в es5 синтаксисе.
    стандарты это как версии. в целом это имеет значение только когда мы говорим о компиляции JS, например при настройке TS config.
    во всех остальных соучае пофиг.
    но все равно не стоит забывать о тех, кто использует var в продакшене

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

    Я всегда делю код на логические блоки с помощью комментов

  • @ДмитрийЛевченко-н3л

    Ошибка на 6:54: ответ верный, объяснение ошибочно. “&&” возвращает не первое истинное значение, а первое логически ложное, либо если таких не найдено - последнее вычисленное (последнее из цепочки истинных). Даже отбросив контекст - сам по себе ноль назвать истинным в булевом контексте как-то прям совсем дерзко) При всём уважении к автору канала с превосходным материалом - такие штуки перед публикацией стоит проверить, перепроверить, и может быть даже ещё раз перепроверить.

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

    Фраза на 4:50, где на фоне такая картинка, звучит очень смешно)

  • @ЕкатеринаТребушнаяДубровина

    В консоли всегда будет выводиться 10?

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

      да, потому что сетТаймаут ставит вызов в следующую итерацию eventLoop. ДО того как интерпретатор js дойдет до их выполнения он уже прокрутит цикл 10 раз. В переменной i будет 10, которая и выведется 10 раз, взятая из замыкания колбэчной функции. Может непонятно написал, но тогда вам надо гуглить eventLoop js

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

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

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

      @@unkind_duck ага ага

    • @arhim7650
      @arhim7650 3 года назад +2

      @@SoreraRU Тут как раз таки основной вопрос в том, что var глобальна, и по сути, каждый цикл будет перезаписывать её глобально, а не внутри лупа цикла.

  • @KogotGRIEF
    @KogotGRIEF 3 месяца назад

    *Я изучаю джаву скрипт или в какую-то религию? Про слово истинну*

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

    Да ты крут

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

    7:00 через секунду выведется все и сразу от нуля до девяти, ибо цикл просто запустит 10 таймаутов по одной секунде, а не будет ждать выполнение каждого из них для запуска следующего.

    • @stanislavivko7329
      @stanislavivko7329 3 года назад +2

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

    • @СергейПресняков-о4р
      @СергейПресняков-о4р 3 года назад

      Пройдет секунда и сразу выведется 10 раз по 10. Javascript такой javascript)

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

      @@СергейПресняков-о4р А если использовать let, то сначала пройдёт одна секунда, а только потом выведутся числа от 0 до 9.

    • @augusthughes2871
      @augusthughes2871 3 года назад +2

      @@StepanChuevYT да, я сначала представил в виде let. давно уже не юзал вары

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

      @@augusthughes2871 +

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

    Да не сложный он!! А запутанный, ввиду того, что эволюционировал!!!

  • @СергейК-б6н
    @СергейК-б6н Год назад

    Топ контент

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

    Незнаю меня только и єтим он и манит єсли надоест можна лигко свичнуться в чтото другое без смени язика...

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

    5:32- лайк)

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

    чистый код не во всех случаях гуд

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

    вроде ж 0 это false....
    хотя вообще прикольно, не знал что эти операторы можно так юзать.

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

      Да, ошибка

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

      В js эти операторы ещё юзают для сокращённой записи, вместо if (true) run() пишут true && run()

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

      @@this_IsUsername очень плохой пример использования оператора

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

      @@faust2134 почему?

  • @shaxx05
    @shaxx05 11 месяцев назад

    Как я напился ВОДОЙ

  • @Alexander-S.
    @Alexander-S. 3 года назад +1

    Дорогой автор, позволь вопрос. Ты говоришь, что YDKJS - must read. Но ведь второе издание сейчас имеют лишь 2 тома, а первое (полное) было написано аж в 2014-2015. При этом Справочник по JS от Флэнагана обновился в 2021 году. Я слышал про YDKJS и ранее, но всегда смущало, что местами он мог устареть. Как и Флэнаган (но вот он обновился). Что выбрать читать? Времени мало, зря читать не хочется. А ещё надо тестирование осваивать))

  • @dogvscatfunny9956
    @dogvscatfunny9956 10 месяцев назад +1

    Самый сложный и не понятный язык это js,и не кто его не может объяснить а тем более научить его работе.Я в программирование 3 года но с этим языком полный мусор.

    • @kalobyte
      @kalobyte 15 дней назад

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

    • @dogvscatfunny9956
      @dogvscatfunny9956 14 дней назад

      @@kalobyte У меня знакомые учились в латвии,только там смогли объяснить и научить как это работает,в ру это не реально все понять.

    • @kalobyte
      @kalobyte 14 дней назад

      @@dogvscatfunny9956 да не, просто надо брать именно платный курс и найти себе подходящего препода
      я по пхп 20 лет искал и нашел
      теперь вот по яваскрипт нашел и боле менее понятно стало,как манипулировать хтмл и цсс
      сейчас вот рекурсию изучаю и не на фибоначах, а на реальном дереве объекта и как раз наверное мне такая рекурсия понадобитс, если я буду все настройки хранить в джейсоне, а не в бд
      я собственно ради одной проги его и изучаю, чтобы потом ее написать и может быть даже продавать

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

    ЖС - легкий. Вся та мозаика на слайде с набором библиотек - чепуха. Там основы главное понять. Остальное все - либо уже не актуально, типа Доджо, Ембер и Марионетт. Либо учится за неделю на уровне практического применения с дальнейшим погружением в нюансы по мере надобности - типа Свелт, Реакт или Вью.

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

      А бест практис наработается после пары-тройки код ревью, если оно есть на проекте. И то, часто это вкусовщина и дело привычки. Одни пишут так, другие - эдак. Одну и ту же задачу.

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

    Ещё страшнее PHP

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

    Дажваскриптизерам совсем заняться нечем? Какое отношение к элегантному или чистому решению может иметь кусок кода оформленный другим синтаксисом или через другой подход, всякие функциональные плюхи декларативного подхода?

  • @Rinat-p7f
    @Rinat-p7f 7 месяцев назад

    ecmascript стандарт и html5 стандарт, остальное все филькина грамота которая плодит мифы и получаем то что 90% разработчиков js думают что eventloop это часть js)

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

    Ага, докажи Мурычу, что Var устарел )))

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

    как поставить дополнительный лайк?)

  • @Oleg_A-v
    @Oleg_A-v 3 года назад

    Да, Backbon особенно важно знать.

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

    Чистый код не существует

  • @Tornado-ln7fq
    @Tornado-ln7fq 11 месяцев назад

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

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

    Не айтем, а итм)))

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

    Вредный контент для новичков

  • @DreeamWorkshop
    @DreeamWorkshop 9 месяцев назад

    javascript ебучее говно