Новое и полезное в Javascript 2024: await без async, тьюплы и promise без контекста

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

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

  • @liz2k
    @liz2k 3 месяца назад +44

    Для меня новое это .with :D

  • @bloodjopa
    @bloodjopa 3 месяца назад +7

    осталось сафари познакомиться с этими достижениями js

  • @vasylvoina6663
    @vasylvoina6663 3 месяца назад +20

    Действительно господа, раньше я страдал от отсутствия оператора пайп "|". Без этого оператора я тупо не мог понять, как изменить ети переменные странные, а теперь как пойдет работа, как закрутиться все! Ух! Уже бегу изменять переменные, которые ждут своих изменений.

    • @tuku_mann
      @tuku_mann 3 месяца назад +2

      Спасибо, что поделились вашей болью, я тоже из-за этого в js не мог(

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

      Не перезакручивайтесь только

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

      Наконец-то можно работать с JS!

    • @barbiturat1
      @barbiturat1 3 месяца назад +2

      На самом деле это очень полезный оператор. Он позволяет
      1. Писать более компактный код
      2. Группировать изменения связанные с одной переменной вместе, что способствует читаемости кода.
      3. Уменьшить в коде число переменных и констант что способствует уменьшению числа возможных ошибок связанных с этим. Это например тот момент из за которого некоторые люди переходят на функциональное программирование.

    • @mikemerinoff
      @mikemerinoff 3 месяца назад +1

      Напишите код, который трансформирует данные переменной, не создавая новых переменных. Если вам близок такой код, поищите работу на лиспе

  • @pasza
    @pasza 3 месяца назад +6

    3:06 пайплайн-операторы не применяются к переменной по очереди; они вычисляют выражение, которое по итогу один раз записывается в переменную "num"; полезное нововведение

  • @user-hijjjkkbv345
    @user-hijjjkkbv345 3 месяца назад

    Спасибо больше ,полезная информация.

  • @nazarfilippov2636
    @nazarfilippov2636 3 месяца назад +5

    А почему мы не можем использовать метод Object.freeze() вместо последнего нововведения (#)?

    • @IvanSen-pv6bu
      @IvanSen-pv6bu 3 месяца назад

      Синтаксический сахар

  • @demimurych1
    @demimurych1 3 месяца назад +5

    топ левел await - єто превращение вашего топ левел кода в генератор со всеми вытекающими: от самой большого потреблерия ресурсов по сравнению с другими возможностями js, до отсутствия єффективных способов оптимизации такого кода или крайняя сложность оптимизации таких генераторов.
    что абсолютно справедливо и для обычной async функции

    • @drak0an
      @drak0an 3 месяца назад +1

      Всегда на страже центрального процессора!

  • @andreysakharov6210
    @andreysakharov6210 2 месяца назад

    Неизменяемые структуры это круто. А можно будет их по значению сравнивать?

  • @ruslan-abdullaev
    @ruslan-abdullaev 3 месяца назад +8

    И совсем ничего про новые методы Set - intersection, union, difference, etc

  • @АлексейЦ-ы4я
    @АлексейЦ-ы4я 3 месяца назад +3

    Миша, а Вы сейчас работаете на чистом JS или все-таки через фреймворки (библиотеку React) ?

  • @user-hijjjkkbv345
    @user-hijjjkkbv345 3 месяца назад

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

  • @iconfael
    @iconfael 3 месяца назад +5

    Про решетку вообще я офигел. JavaScript развивается на глазах

    • @funcelot
      @funcelot 3 месяца назад +1

      Это вообще почти Erlang, на моих глазах язык перестает быть скриптиком для написания игр fluppy bird, вообще уже что-то академическое заезжает, круто, да.

    • @iconfael
      @iconfael 3 месяца назад +4

      @@funcelot осталось добавить статическую типизацию прямо на чистый JavaScript как многие это ждут. Я даже не знаю что случится с TypeScript тогда.
      И вообще примут ли это разработчики?

    • @ruslan-abdullaev
      @ruslan-abdullaev 3 месяца назад +1

      Непонятно для чего Михаил привел этот пример, т.к. неизвестно когда это появится в языке, Record & Tuple еще на stage 2

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

      @@ruslan-abdullaev # не будет? Блин, тотально необходимая штука, -.clooneDeep не придется везде пихать

  • @showing7577
    @showing7577 2 месяца назад

    що за extension для vs code?)

  • @BlankaSmidova-j3u
    @BlankaSmidova-j3u 3 месяца назад +48

    А какие методы groupBy для массивов ты считаешь самыми полезными?) я тоже недавно решил сменить сферу и выбрал курсы Skypro для этого)) долго сомневался но не пожалел))

    • @drak0an
      @drak0an 3 месяца назад +1

      спамерский коммент, накрученные лайки.

    • @danke1673
      @danke1673 3 месяца назад +1

      спам коммент сгенерированный чат гпт для рекламы скайпро лол

  • @user-glory-of-ukraine
    @user-glory-of-ukraine 2 месяца назад

    Interesting changes but when it will be relised?

  • @HEX_CAT
    @HEX_CAT 3 месяца назад +1

    Лайк в поддержку видео❤

  • @ИванЛапшин-л2в
    @ИванЛапшин-л2в 2 месяца назад +1

    Немного странно, что рассказывая о новинках js вы используйте сильно устаревший оператор with))

    • @SergeSchekhovtsov
      @SergeSchekhovtsov Месяц назад

      А чем он плох, чтобы его не использовать?

    • @OleksiyStr
      @OleksiyStr 29 дней назад

      @@SergeSchekhovtsov "with" сам по себе возвращает новый массив. "Return a new array with the element at index replaced with value."

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

    4:28, для таких случаев рекомендуют использовать for loop вместо .forEach (чё-то про оптимизации компилятора)

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

      а можно подробнее, для каких именно случаев рекомендуют for loop вместо forEach ?

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

      ​@@TalkerTube надо в сторону оптимизаций копать, не интересовался глубоко, чё-то связано с ссылкой this, c захватом контекста
      компилятору сложнее обработать forEach

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

      @@trahar forEach переделывается под капотом в for loop, разницы в скорости с 2019 года уже нет

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

      @@bloodjopa вроде истинно для простых случаев, зачастую бывает, что компилер на справляется с этим и оставляет как есть, лучше читать доки

  • @РусланОсманов-с7й
    @РусланОсманов-с7й 3 месяца назад

    полезно,это мне найболее инетересно

  • @kiryakirya-sila377
    @kiryakirya-sila377 3 месяца назад

    А как сделать такие подсказки, как у него? Я так понимаю это какой-то AI плагин? Но как он предугадывает? Или просто это уже было один раз написано перед записью видоса, а потом AI просто запомнил и предлагает?

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

      да. copilot вероятно

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

      Это codeium

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

    крутые новые фичи ! )

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

    Да, эти изменения неально удобные 👍

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

    Получается что у ClojureScript теперь нет вообще никаких преимуществ перед js.

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

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

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

    А, ну если кто ничего не понял, я просто пробую писать на языке Уильяма Шекспира, и хешбенгу быть. Очень рад, что всё-таки они это сделали!

  • @Стоячаястабильнаяволна
    @Стоячаястабильнаяволна 3 месяца назад +1

    Михаил, как Вы считаете, сколько лет ещё можно будет зарабатывать на JavaScript? В своём недавнем стриме Яков Файн предположил, что лет 30.

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

      Этот язык изучают в университетах, следовательно - минимум лет 30, это гарантированно

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

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

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

      ​@@barbiturat1 будет адская смесь лучших практик из javascript, java и python. Основные конструкции типа массивов, циклов, аспекты и аннотации если джавист или промисов если на джаваскрипте пишешь должен знать наизусть + основной фреймворк языка. Плюс обызательно лайфкод на алгоритмы это на джун+/миддл у меня такое постоянно, я постоянно прохожу собесы и постоянно заваливаю хотя отвечаю на 80% всего что спрашивают. Лучшие практики никуда не уйдут, будет больше синтаксического сахара кому как бы не хотелось без него ну и да умение пользоваться нейронкой. Ещё думаю CI/CD сейчас + тестирование сейчас почти обязательно спрашивают на собесах. Ну на практике это отдельный человек, хотя не факт скажут вот нейронка за тебя всё пишет давай ещё и кубики поддерживай))

    • @АлександрБолдырев-п7ц
      @АлександрБолдырев-п7ц 3 месяца назад

      ​@@barbiturat1и как же ты будешь писать промпт нейросетке не зная языка на котором ей нужно что то написать? Это будет что то типа "Дядь, сделай красиво". Нейросетки ещё долго будут только помощниками. Но знать как с ними работать маст хэв.

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

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

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

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

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

    А в тайпскрипте оно будет работать?

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

      конечо, type script этот тот же js только с синтаксисом типов

  • @Mousepiece
    @Mousepiece 3 месяца назад +1

    Это всё скоро выйдет или уже работает ?

    • @daniyarsariev6483
      @daniyarsariev6483 2 месяца назад

      node 22 версии все это есть, и в проекте можно использовать, но 22 нода сейчас не lts, вряд ли нормальный человек пустит аппликейшн с 22 нодой на продакшн

    • @Mousepiece
      @Mousepiece 2 месяца назад

      @@daniyarsariev6483 понял, спасибо

  • @paxpax1707
    @paxpax1707 3 месяца назад +9

    Какие же бесполезные фичи только не придумают только чтобы не вводить паттерн матчинг. Просто сделайте нормальный паттерн матчинг чтобы не городить простыню из 10 if операторов господи прошу. Скоро будет 10 лет как висит RFC в репозитории TC39. Люди как только не изворачиваются чтобы контрлировать обработку ошибок. Возвращают строки, енамы или булеаны из функций. Пишут простыню из try/catch. Просто сделайте паттерн матчинг хотя на уровне оператора switch. Сделайте чтобы switch умел возвращать выражение как любом другом нормальной языке, а не вот эта клоунада со стейтментом. Сделайте чтобы if тоже был выражением. Господи боже. Нам ничего больше не надо для счастья. Нафига нам эти пайплайны или тьюплы?

  • @abbze8272
    @abbze8272 2 месяца назад

    Осталось строгую тпизацию завезти на уровне языка и будет норм язык.

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

    о! Иммутабельные данные и пайплайны делают из JS почти Clojure! Очень интересный поворот. Я на clojure пишу лет 8 уже, может смогу опять писать на JS без рвотных позывов.

    • @kvidon1357
      @kvidon1357 3 месяца назад +1

      Ну если у тебя рвотные позывы от js, стоит сходить к врачу

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

      @@kvidon1357 начал писать на js в1997 - имею право. Впрочем, вы конечно охуенно разбираетесь в js, вам виднее.

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

      @@eugenepotapenko и что должна дать людям ваша дата начала кодинга на js? Умнее вы явно не стали

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

      @@kvidon1357 да я вообще даун по жизни. Не то что вы )

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

      @@eugenepotapenko думаешь, этими комментариями сделаешь себя умнее? Ну понятно, когда ответить нечего, только и остается как писать всякую хрень

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

    Давай еще больше примеров кода разных кейсов

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

    Если использовать # то можно и клонировать объект получается?

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

      Расскажите как? Это реально боль

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

      Вряд ли это будет глубокое клонирование. Только первого уровня

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

      ​@@TheBoris83 ну я не пробовал, но а если ))​

    • @barbiturat1
      @barbiturat1 3 месяца назад +1

      ​@@TheBoris83почему не глубокое? Если теперь все объекты под капотом будут иммутабельными, то их полное клонирование должно быть практически таким же быстрым как поверхностныое. Так реализовано например в языке Clojure.

    • @user-glory-of-ukraine
      @user-glory-of-ukraine 2 месяца назад

      ​@@brodabrostructuredClone(obj,options)

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

    Вчера смотрел новость про то что на блокчейне Tezos X завезли js

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

    JS меняется, развивается - это круто. Скоро и типы строгие возможно подгонят, и нужны в TS больше не будет. А фишки норм, мне понравились. Ждём дженерики и модификаторы:)

  • @brodabro
    @brodabro 3 месяца назад +1

    Когда же будет метод копирование объектов

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

    8:24 неужели завезли человеческое копирование объекта? ^_^

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

    Ну с нодой конечно так себе пример для withResolvers

  • @tarque_
    @tarque_ 3 месяца назад +1

    когда уже весь linq перенесут в JavaScript....

  • @yuriy.kostenko
    @yuriy.kostenko 2 месяца назад +1

    Костыли с решеткой это супер! На что только не идут люди, чтобы не делать нормальные свойства с геттерами и сеттерами и поля с модификаторами доступа! ))

    • @dotvkab
      @dotvkab 2 месяца назад

      Медианный уровень жс-ников в одном предложении

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

    А что за плагин делает такой чудесный автокомплит?

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

      Из того что я знаю, такое может Codeium и Copilot, первым сам пользуюсь, прикольная штука, это расширение в vs code, установил и все работает

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

      Codeium он использует

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

    Прям сильно в ФП дрифует

  • @funcelot
    @funcelot 3 месяца назад +1

    immutable data structures. it is been 40 years to pass to just add this feature to ECMAScript 2024? what a nonsence. really. whole langueages were created including Erlang, Go, Rust just to have this feature as the first-class language objects, including well-known React library. Immutability of data and a way to mutate throught cloning and not modifyhing objects pass throught whole architecture patterns like distributed systems, in-memory online transaction processing, clusters and database processing, serverless, stateless systems. All of this made available just to the simple fact that we do not track modifications of exact objects in memory. We just doing f*n copies which takes off responsibility of sending events to subscribed objectst about changes in source object. that a heck a really, really old idea. I like that they finally implemented it not using whole micro-frameworks, but on a language level #. F*uck, this is best morning i've ever had since 1997 in js scripting. Thank you, you are real man! Great news, and keep going!

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

      Вообще меня конечно радует что иностранцы смотрят русскоязычные ролики.

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

    ох уж эти любители спагетти :)

  • @alekseypavlov2539
    @alekseypavlov2539 3 месяца назад +1

    Не изменяемый объект и его копия
    const user = Object.freeze({
    name: 'Aleksey',
    age: 24,
    })
    const newUser = { ...user }
    newUser.age = 18
    console.log(user, newUser)

    • @whatthepeople
      @whatthepeople 2 месяца назад

      суть tuple и records не только в том, что они иммутабельны, но и в свойствах, которые можно легко заиметь благодаря иммутабельности - сравнение по value (а не по ссылке) за константное время, не перебирая всю структуру, и, следовательно, становится возможным следующее:
      const map = new Map([
      [#{ x: 0, y: 0 }, 'some value']
      ])
      map.get(#{ x: 0, y: 0 }) // 'some value'

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

    а зачем использовать промис, если есть парадигма асинхронного программирования async-await ... я хочу сказать, что в этом смысле промис - рудимент ... или нет? )))

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

      все асинхронные функции возвращают промис в js

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

      иногда нужно что-то хардкорное самому завернуть в промис

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

      @@eugenefedoryachenko8793 ) это понятно, и пусть возвращают, но напрямую зачем ими пользоваться сейчас?

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

      Promise.all, например, используется для параллельных запросов

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

      @@romandeveloper7720 вот же как к калбекам прикипели, понимаю )))

  • @owl2137
    @owl2137 3 месяца назад +1

    Первый :))

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

    5:24 - та ну, не особо и экономит время-то

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

    разработчики на Rust смеются в стороне .....

  • @ted_res
    @ted_res 3 месяца назад +4

    В 2014 не писали "нет войне"?

    • @KopoLPedov
      @KopoLPedov 3 месяца назад +4

      не модно было

    • @enterprise7585
      @enterprise7585 3 месяца назад +4

      Просто не обращайте внимание, он же не с Донбасса, как мы с вами, ему простительно. Человек специалист, за это его и смотрим.

    • @UCmdrhccjVM95UidL5idZw2Q
      @UCmdrhccjVM95UidL5idZw2Q 3 месяца назад +4

      Так так... мамкины воины возбудились и прилетели написать комментарий)

    • @proletarian
      @proletarian 3 месяца назад +5

      8 лет дамбили бамбас?

    • @A.K-p3e
      @A.K-p3e 3 месяца назад

      В Украине как раз все писали и говорили, только рашистам-путинистам похрен план захвата Украины уже начали реализовывать

  • @hellonexee
    @hellonexee Месяц назад

    const grouped = numbers.reduce((acc, num) => (
    acc[num % 2 === 0 ? 'even' : 'odd'].push(num) && acc
    ), { even: [], odd: [] });