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

แชร์
ฝัง
  • เผยแพร่เมื่อ 1 ส.ค. 2024
  • Каждый год стараюсь следить за изменениями и предложениями в Javascript. В этом видео расскажу про 5 самых интересных для массового программиста нововведений в EcmaScript 2024
    Таймкоды:
    00:00 Вступление
    00:36 await без async
    01:22 Пайплайн-операторы
    03:35 Группировка элементов массива
    05:22 Работа с Promise вне контекста
    07:33 Записи и Тьюплы
    08:42 Заключение
    НЕТ ВОЙНЕ!
    Выразить благодарность
    ko-fi.com/larchanka
    boosty.to/larchanka
    yoomoney.ru/to/410011886858328
    BTC: 127J5x79L9bb7T4jiYJ2U7jHNDLXEx4kT3
    USDT (TRC20): TWRQit8o1JJGWjAph3DZFysygUxSwqiq9Q
    TON: UQBDiFGDTLpp1zWLefv0LnH9TbEeUIcPSoO5uDNwhzktKP33
    Как я стал программистом
    • КАК Я СТАЛ ПРОГРАММИСТОМ
    Как я переехал в Европу
    • Как я переехал в Европу
    Стрим: Карьера программиста
    • Карьера программиста: ...
    VPN, который я использую
    get.surfshark.net/SH1Wy
    ➡️ Сайт: i.mobila.name/xT
    ➡️ Instagram: i.mobila.name/yp
    ➡️ Twitter: i.mobila.name/Ua
    ➡️ Telegram: i.mobila.name/b7d
    👉🏻 Больше влогов здесь:
    #larchankavlog #larchanka
    👉🏻 Ежедневные влоги:
    #larchankadaily
    👉🏻 Чем я снимаю:
    ➡️ iPhone 14 Pro
    ➡️ Еще одна камера: DJi Osmo Action
    ➡️ Еще одна камера: Sony DSC-WX500

ความคิดเห็น • 123

  • @liz2k
    @liz2k 23 วันที่ผ่านมา +38

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

  • @bloodjopa
    @bloodjopa 18 วันที่ผ่านมา +7

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

  • @pasza
    @pasza 23 วันที่ผ่านมา +6

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

  • @vasylvoina6663
    @vasylvoina6663 23 วันที่ผ่านมา +20

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

    • @tuku_mann
      @tuku_mann 23 วันที่ผ่านมา +2

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

    • @SergeyIT
      @SergeyIT 23 วันที่ผ่านมา

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

    • @dmitrykisel9564
      @dmitrykisel9564 23 วันที่ผ่านมา

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

    • @barbiturat1
      @barbiturat1 23 วันที่ผ่านมา +2

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

    • @mikemerinoff
      @mikemerinoff 23 วันที่ผ่านมา +1

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

  • @ruslan-abdullaev
    @ruslan-abdullaev 23 วันที่ผ่านมา +7

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

  • @user-hijjjkkbv345
    @user-hijjjkkbv345 16 วันที่ผ่านมา

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

  • @nazarfilippov2636
    @nazarfilippov2636 22 วันที่ผ่านมา +5

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

    • @IvanSen-pv6bu
      @IvanSen-pv6bu 22 วันที่ผ่านมา

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

  • @yuriy.kostenko
    @yuriy.kostenko 7 วันที่ผ่านมา +1

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

  • @HEX_CAT
    @HEX_CAT 23 วันที่ผ่านมา +1

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

  • @demimurych1
    @demimurych1 22 วันที่ผ่านมา +4

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

    • @drak0an
      @drak0an 16 วันที่ผ่านมา +1

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

  • @isvladxxe
    @isvladxxe 23 วันที่ผ่านมา

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

  • @iconfael
    @iconfael 23 วันที่ผ่านมา +5

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

    • @funcelot
      @funcelot 23 วันที่ผ่านมา +1

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

    • @iconfael
      @iconfael 23 วันที่ผ่านมา +4

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

    • @ruslan-abdullaev
      @ruslan-abdullaev 23 วันที่ผ่านมา +1

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

    • @vasman94
      @vasman94 21 วันที่ผ่านมา

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

  • @BlankaSmidova-j3u
    @BlankaSmidova-j3u 21 วันที่ผ่านมา +50

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

    • @drak0an
      @drak0an 16 วันที่ผ่านมา +1

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

    • @danke1673
      @danke1673 14 วันที่ผ่านมา +1

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

  • @Mousepiece
    @Mousepiece 23 วันที่ผ่านมา +1

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

  • @user-ix5vl2ry8j
    @user-ix5vl2ry8j 23 วันที่ผ่านมา

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

  • @paxpax1707
    @paxpax1707 21 วันที่ผ่านมา +8

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

  • @M4Lets_tv
    @M4Lets_tv 23 วันที่ผ่านมา

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

  • @showing7577
    @showing7577 3 วันที่ผ่านมา

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

  • @barbiturat1
    @barbiturat1 23 วันที่ผ่านมา

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

    • @ivanchernenko7958
      @ivanchernenko7958 23 วันที่ผ่านมา

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

  • @user-lc5fi3iw1k
    @user-lc5fi3iw1k 23 วันที่ผ่านมา +3

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

  • @trahar
    @trahar 22 วันที่ผ่านมา

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

    • @TalkerTube
      @TalkerTube 22 วันที่ผ่านมา

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

    • @trahar
      @trahar 22 วันที่ผ่านมา

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

    • @bloodjopa
      @bloodjopa 18 วันที่ผ่านมา

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

    • @trahar
      @trahar 17 วันที่ผ่านมา

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

  • @user-hijjjkkbv345
    @user-hijjjkkbv345 16 วันที่ผ่านมา

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

    • @egodzb
      @egodzb 15 วันที่ผ่านมา

      Могу по своему опыту сказать, после работы не очень хочется еще и на ютуб код писать. Только вот такие новости почитать да обсудить 😁

  • @user-glory-of-ukraine
    @user-glory-of-ukraine 12 วันที่ผ่านมา

    Interesting changes but when it will be relised?

  • @CJSurv
    @CJSurv 23 วันที่ผ่านมา

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

    • @ivanovchin
      @ivanovchin 22 วันที่ผ่านมา

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

  • @arahnid_9844
    @arahnid_9844 22 วันที่ผ่านมา

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

  • @brodabro
    @brodabro 23 วันที่ผ่านมา +1

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

    • @gerda-morozova
      @gerda-morozova 23 วันที่ผ่านมา +2

      structuredClone(obj)

  • @kiryakirya-sila377
    @kiryakirya-sila377 22 วันที่ผ่านมา

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

    • @un_defined
      @un_defined 22 วันที่ผ่านมา

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

    • @sokolawp
      @sokolawp 19 วันที่ผ่านมา

      Это codeium

  • @samogon5564
    @samogon5564 23 วันที่ผ่านมา

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

  • @AlexanderBorshak
    @AlexanderBorshak 23 วันที่ผ่านมา +2

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

  • @dkuba
    @dkuba 23 วันที่ผ่านมา

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

    • @brodabro
      @brodabro 23 วันที่ผ่านมา

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

    • @TheBoris83
      @TheBoris83 23 วันที่ผ่านมา

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

    • @dkuba
      @dkuba 23 วันที่ผ่านมา

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

    • @barbiturat1
      @barbiturat1 23 วันที่ผ่านมา +1

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

    • @user-glory-of-ukraine
      @user-glory-of-ukraine 12 วันที่ผ่านมา

      ​@@brodabrostructuredClone(obj,options)

  • @funcelot
    @funcelot 23 วันที่ผ่านมา

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

  • @abbze8272
    @abbze8272 7 วันที่ผ่านมา

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

  • @eugenepotapenko
    @eugenepotapenko 23 วันที่ผ่านมา

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

    • @kvidon1357
      @kvidon1357 23 วันที่ผ่านมา +1

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

    • @eugenepotapenko
      @eugenepotapenko 22 วันที่ผ่านมา

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

    • @kvidon1357
      @kvidon1357 22 วันที่ผ่านมา

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

    • @eugenepotapenko
      @eugenepotapenko 22 วันที่ผ่านมา

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

    • @kvidon1357
      @kvidon1357 22 วันที่ผ่านมา

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

  • @SYVlive
    @SYVlive 22 วันที่ผ่านมา

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

  • @user-cu6yn9bs9f
    @user-cu6yn9bs9f 23 วันที่ผ่านมา +1

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

    • @funcelot
      @funcelot 23 วันที่ผ่านมา

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

    • @barbiturat1
      @barbiturat1 23 วันที่ผ่านมา

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

    • @dgvgfg
      @dgvgfg 23 วันที่ผ่านมา

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

    • @user-oi3gg4rw7y
      @user-oi3gg4rw7y 22 วันที่ผ่านมา

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

    • @un_defined
      @un_defined 22 วันที่ผ่านมา

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

  • @tarque_
    @tarque_ 21 วันที่ผ่านมา +1

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

  • @mikep541
    @mikep541 23 วันที่ผ่านมา

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

  • @alekseypavlov2539
    @alekseypavlov2539 14 วันที่ผ่านมา +1

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

    • @whatthepeople
      @whatthepeople 6 วันที่ผ่านมา

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

  • @brr3534
    @brr3534 20 วันที่ผ่านมา

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

  • @enterprise7585
    @enterprise7585 23 วันที่ผ่านมา

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

    • @raskoltime3186
      @raskoltime3186 23 วันที่ผ่านมา +3

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

    • @bidlo_menetil
      @bidlo_menetil 23 วันที่ผ่านมา

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

  • @arthurarthur4075
    @arthurarthur4075 21 วันที่ผ่านมา

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

  • @funcelot
    @funcelot 23 วันที่ผ่านมา +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 23 วันที่ผ่านมา

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

  • @michaelinuente92
    @michaelinuente92 23 วันที่ผ่านมา

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

  • @owl2137
    @owl2137 23 วันที่ผ่านมา +1

    Первый :))

    • @woofwoof4081
      @woofwoof4081 23 วันที่ผ่านมา

      🥶🥶🥶

  • @romandeveloper7720
    @romandeveloper7720 23 วันที่ผ่านมา

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

  • @aleksandrdemidov6058
    @aleksandrdemidov6058 23 วันที่ผ่านมา

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

    • @eugenefedoryachenko8793
      @eugenefedoryachenko8793 23 วันที่ผ่านมา

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

    • @enterprise7585
      @enterprise7585 23 วันที่ผ่านมา

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

    • @aleksandrdemidov6058
      @aleksandrdemidov6058 23 วันที่ผ่านมา

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

    • @romandeveloper7720
      @romandeveloper7720 23 วันที่ผ่านมา

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

    • @aleksandrdemidov6058
      @aleksandrdemidov6058 23 วันที่ผ่านมา

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

  • @alexandrsharp920
    @alexandrsharp920 23 วันที่ผ่านมา

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

  • @ted_res
    @ted_res 23 วันที่ผ่านมา +4

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

    • @KopoLPedov
      @KopoLPedov 23 วันที่ผ่านมา +4

      не модно было

    • @enterprise7585
      @enterprise7585 23 วันที่ผ่านมา +4

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

    • @UCmdrhccjVM95UidL5idZw2Q
      @UCmdrhccjVM95UidL5idZw2Q 23 วันที่ผ่านมา +4

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

    • @proletarian
      @proletarian 23 วันที่ผ่านมา +5

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

    • @user-xq5bv7ki5n
      @user-xq5bv7ki5n 23 วันที่ผ่านมา

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