Как сделать такую функцию SUM(1)(2)(3)... на JS?

Поделиться
HTML-код
  • Опубликовано: 9 сен 2024
  • #soer #itubeteam
    Основной канал для общения и публикации новых видео - Телегарм - t.me/softwaree...
    Спонсорство - donate.s0er.ru
    Сайт платным контентом - soer.pro
    Зеркало для видео Дзен Видео - zen.yandex.ru/...
    GitHub - github.com/soe...
    Чат для программистов - / discord
    Группа ВК - codeart...

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

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

    Таймкоды:
    00:00 Введение
    00:50 Простой вариант решения
    03:45 Решение с помощью TDD
    05:06 Первый тест
    09:17 Рефакторинг
    11:33 Деструктивные тесты
    15:51 Объявления по архитектурным стримам
    Исходники - www.patreon.com/posts/41736979

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

      Описание:
      Напишите функцию, которая принимает строку из скобок и определяет, допустим ли порядок этих скобок. Он должен возвращать истину, если строка действительна, и ложь, если она недействительна.
      Все входные строки будут непустыми и будут состоять только из круглых скобок, скобок и фигурных скобок: () [] {}.
      Примеры
      "(){}[]" => True
      "([{}])" => True
      "(}" => False
      "[(])" => False
      "[({})](]" => False

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

    Всё было превосходно до момента как решение мусора ограничилось лишь первым вызовом... а что если мусор будет дальше? разве должно быть обнуление? а так и будет:
    sum(1)(2)()(4);
    // 1
    // 3
    // 0
    // 4
    Имхо, необходимо и n обрабатывать, и в случае с кратким написанием функции возврат должен быть таким
    return (n) => sum(a + (parseInt(n) || 0));
    // 1
    // 3
    // 3
    // 7
    Могу быть не прав в правильности решения, не js-ник...

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

    По поводу vim:
    замена символа (индекс в тесте) - r
    Переход до конца блока - %. Таким образом, например, можно быстро вырезать блок: встаёшь на строчку с блоком, v, end, %, d
    Двигать курсор вперед до символа - t , назад - T .

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

    А можно сделать так чтобы в итоге возвращалось значение? Например const a=func(1)(2)(3)

  • @deniskulakov682
    @deniskulakov682 4 года назад +18

    Нет тут рекусии, потому что как миниму рекурся должна иметь условие выходи из нее, а тут просто ф-ция возврощает другую ф-цию

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

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

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

      @@kyrylo_alekseev согласен, бесконечная рекурсия - то же рекурсия по определению.

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

      @@d1namis Так тут же простое замыкание...

  • @c01nd01r
    @c01nd01r 4 года назад +10

    Тоже смотрел перезалив той видяхи того парня?)

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

      Смотрел оригинал

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

      на самом деле хорошую задачу нашли в альфе)

  • @Boortwint
    @Boortwint 4 года назад +11

    Евгений, здорово было бы немного усложнить задачу.
    Я бы предложил ребятам немного заморочиться и придумать реализацию, которая способна принимать в одном вызове несколько параметров, например:
    sum(1,3,0)(4,1,1) // 10
    На собеседованиях также нередко просят реализовать возможность возврата итогового значения суммы и его переиспользования:
    sum(1)(2)(3) + sum(1)(2) // 9
    *Спойлер* для тех, кто заинтересовался: для первого задания нужно рассматривать входные аргументы как массив и аккумулировать числа в этом массиве с помощью метода reduce. Для второго нужно понимать принципы приведения объектов к примитивам. Копайте в сторону Symbol.toPrimitive или valueOf.

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

      let sum = function () {
      const result = [...arguments].reduce((a, b) => a + b, (this && this.result) || 0);
      console.warn(result);
      return sum.bind({result});
      }

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

      @@maxr8212 в строгом режиме этот вариант, к сожалению, работать не будет. вызов sum(1) упадёт с ошибкой, так как контекст первого вызова функции sum не привязан к какому-либо объекту. В строгом режиме ссылка this внутри такой функции будет равен undefined. Попытка получить result у undefined и приводит в конечном счёте к ошибке исполнения.

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

      @@Boortwint обновил

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

      let sum = function (a) {
      a = [...arguments].reduce((a,b) => a + b)
      let closureFunc = function(b) {
      b = [...arguments].reduce((a,b) => a + b)
      return b ? sum(a + b) : a;
      }
      closureFunc.toString = () => a;
      return closureFunc;
      }

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

      import { curry } from "ramda"
      Я у мамы инженер.

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

    Но функция Выводит суммы, но не возвращает сумму...

    • @DEN-tg1yp
      @DEN-tg1yp 4 года назад

      Тоже не понимаю, что за фигня...

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

      @@DEN-tg1yp В задании сказано выводить в консоль, что функция и делает

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

      Можно в таком случае возвращаемой функции добавить метод [Symbol.toPrimitive] который вернет result

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

    В предложенном варианте функции нет рекурсии потому, что там возвращается функция, а не запускается. То есть запускается функция, которая возвращает функцию, которая при вызове запустит первую функцию, но добавив к её аргументу новое значение. То есть функция сама себя не вызывает, а значит рекурсии нет.

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

      Как не вызывается, если возвращается результат выполнения функции sum?)

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

      @@vladick4272 не уловил связку тезиса и аргумента. Поясните. Логично, что при вызове функции sum мы получаем результат выполнения функции sum, но это никак не связано с рекурсией, так все функции работают. Я Вас или не понял, или же Вы чего-то не досказали.

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

      Nikolay Matveychuk , я имею ввиду, что в данном случае, родительская функция sum все таки вызывает саму себя через стрелочную функцию, передавая новое значение. А если так, то это все таки рекурсия

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

      ​@@vladick4272 она сама себя не вызывает. Она возвращает функцию, при вызове которой вызовется сама. Если описать это более математически, то работает это приблизительно так:
      определим множество функций sumₖ(x) = sumₖ₊ₓ
      будем считать, что sum(x) = sum₀(x), ну то есть введём удобный псевдоним для sum₀
      Вот так и работает предложенная программа, после чего sum(a)(b)(c)(d) просто вызывает последовательно некий набор функций sumₖ
      Функция sumₖ(x) сама себя не вызывает, она возвращает другую функцию подобную себе. А то, что в программе это похоже на рекурсию, так это лишь потому, что мы не определяем функции sumₖ заранее (ну нецелесообразно объявлять заранее бесконечное множество функций xD ), а делаем это в теле вызываемой функции по мере необходимости.
      Надеюсь смог объяснить суть. То есть вызвать функцию и вернуть функцию - это не одно и то же.

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

    можно порешать классику функции каррирования, мемоизации, композиции :) к стати решение этой задачи заняло около 5 минут функциональным способом, действительно крассивая функция :)

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

    S0ER, большое спасибо за видео! Пример задачи: Есть RESTful API, куда можно отправлять HTTP GET запрос раз в 500 ms. Есть очередь из 100 подобных запросов. Нужно собрать статистику по удавшимся и неудавшимся запросам.

  • @user-os2vb6wv7l
    @user-os2vb6wv7l 4 года назад +4

    Мне думая, что тут итеративный процесс. Вычисления идут на каждом шаге. А не ждут до конца и только потом вычисляются.

  • @pavel-orlov
    @pavel-orlov 4 года назад +1

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

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

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

    • @pavel-orlov
      @pavel-orlov 3 года назад

      @@TwilightSun32 Дело не в конкретном вопросе на знание терминов. Если он не знает, что это, то далее обычно объясняешь сам и смотришь, как человек на это реагирует, как думает, что пытается сделать и т.п. Возможно вместе решаете задачу. Так как цель не завалить, а найти хорошего спеца, то суть не в точном ответе. Просто большинство даже о ФП не слышали и никогда не использую, но пишут, что мега-специалисты в реакте.

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

      @@pavel-orlov если объяснять и смотреть именно на попытки решения конкретной объясненной задаче, то да, это имеет смысл. правда тут вместо каррирования можно брать что угодно другое, что для реализации требует того же уровня знания тех же аспектов языка, на кодварс например хватает задачек типа функция возвращает функцию и т.п.
      к слову, на мой взгляд, джаваскрипт вообще располагает к странному пониманию основ программирования в том числе и функциональных штук, да : )
      типа вот пиши такую штуку оно же удобно так все пишут и работает... а как работает - это сложности уже, не надо знать... стрёмно.

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

    задача с собеседования
    Написать функцию, где решалась бы следующая задача. Найти n-ю цифру последовательности из квадратов целых чисел: 149162536496481100121144...
    Например, 2-я цифра равна 4, 7-я 5, 12-я 6. Использовать операции со строками в этой задаче запрещается.

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

      Тоже сталкивался, только на олимпиаде)

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

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

    • @mikhail-khoroshev
      @mikhail-khoroshev 2 года назад

      Ну что тут такого? Создаешь count
      Цикл for
      Если в цикле выполняется условие что корень arr[i] это целое число, тогда count ++
      Когда count = искомому n, возвращаешь arr[i].
      Либо применить filter(), и в отфильтровпнном массиве обратиться к индексу [n]
      Первая запись менее красива, но выполнится быстрее

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

      @@mikhail-khoroshev нужно найти цифру, а не все число

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

    10:55
    Второй вопрос вроде как предполагает, что ответ на первый вопрос - да :)
    И интуитивный, первый приходящий в голову ответ - да, есть.
    Но меня напрягает отсутствие явного терминального условия выхода из рекурсии

  • @user-jf9tg1uj6x
    @user-jf9tg1uj6x 4 года назад

    Здравствуйте) как по вашему мнению, научные степени типа докторских всяких они же на оклад особо сильно не влияют? На них скорее сертификаты повлияют, нежели вузовские степени?

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

      В ИТ? Разве что в какой нибудь гос компании, а в нормальной продуктовой компании на сертификаты/степени и прочее - похрен

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

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

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

    Здесь нет рекурсии, здесь каррирование

  • @user-yd7db3wd7w
    @user-yd7db3wd7w 4 года назад +1

    Недавно только закончил книгу "composing software" от Эллиота

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

      и как? бустанул скиллы?

    • @user-yd7db3wd7w
      @user-yd7db3wd7w 3 года назад

      @@vladkolesnik2274 сложно сказать. Я читал ее два раза. В первый раз много инфы я пропустил (не стал использовать на практике), а многое не понял. Недавно перечитывал, в этот раз лучше, теперь пытаюсь пользоваться принципами с книги. Книга вообще расчитана не на "бустануть скиллы", а показать другой взгляд на решения задач, которые ты уже решал

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

      @@user-yd7db3wd7w понял, тоже скачал попробую как-нибудь,спасибо за ответ

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

    Как сделать подписку на видео про архитектуру и получить возможность смотреть скрытые стримы?

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

    a=a||0; супер. буду менять typeof und...

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

    как небольшое дополнение
    let sum = function (a) {
    let closureFunc = b => b ? sum(a + b) : a;
    closureFunc.toString = () => a;
    return closureFunc;
    }
    learn.javascript.ru/task/sum-many-brackets

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

    Не знаю будет ли такой вариант быстрее, тут не будет замыканий, но будет проведение типов, что с другой стороны так же ограничивает функцию и она просто будет сбрасыватся в 0 если передать ей что-то неадекватное. ;)
    function sum(val) {
    const res = (Number.isNaN(+this) ? 0 : +this) + val;
    console.log(res);
    return sum.bind(res);
    }
    P.s. рекурсии нет, только биндинг замыканий.

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

    Неплохо работаешь в vim!
    В реальной работе - морока такая эти тесты писать.
    Поэтому многие их не пишут. Или пишут тяп-ляп. Потому что проверь то, проверь это. Еще и деструктивные проверки.
    Но тесты писать - полезно и правильно. Чтоб Боинги потом не падали из-за ошибки в программе.

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

      Кто умеет - пишет, кто не умеет пишет тесты и примеры для поступления на работу. Потом эти великолепные сециалисты знающие все, сыплющие терминами, хорошим английским произношением, и тд. Да вот беда- , нифига не могут программать.

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

      @@dmitriypolynin7273 От части Вы правы. Раньше сильно учили думать, предвидеть в процессе написания. Но все не предусмотреть, максимум 7 сущностей в голове держим в моменте, а где то отвлекут, где то и сам под настроение косяки провтыкаешь, убежишь далеко и вообще забудешь.

  • @user-bj9qn1br3n
    @user-bj9qn1br3n 3 года назад

    Сегодня попалась эта задача на codewars.com, только в вашем случае упрощённый вариант условия у задачи. На codewars условие такое напишите функция add(1)(2)(3) разное кол-во вызовов, которая при сравнении с числом будет возвращать true например add(1) == 1 true. add(1)(2) == 3 true и т.д

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

      да, тоже решал её там, вспомнил.
      как по мне это конечно немного разные задачи: в кодварс упор на джсные извращения (нюансы работы ==) добавляется
      а тут вон на видео tdd на первом месте (хотя я не в курсе подразумевается ли столь фундаментальный подход на собеседовании)

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

    О каррирование =)

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

      неа

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

      @@DjLeonSKennedy как "неа"?

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

    Видео супер. Обидно, что перешел на JS. Но не важно. Вот зада:
    Есть массив целых случайно сгенерированных чисел. Нужно вывести в порядке убывания последовательные цепочки чисел. ожидаемый результат:
    999, 998,997, 996
    1,2,3
    666, 667
    0
    .... and so on.

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

      Array.from({length: 40}, () => Math.floor(Math.random() * 1000)).sort((a,b) => a - b).reverse()

    • @Dmytro-Tsymbaliuk
      @Dmytro-Tsymbaliuk 4 года назад +1

      @@maxr8212 какой смысл делать сортировку и переворачивать, если можно сразу нормально отсортировать?

  • @mtb-love-belarus
    @mtb-love-belarus 4 года назад

    Агонь

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

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

  • @M-Daeva
    @M-Daeva 4 года назад +5

    Мой ленивый вариант решения этой задачи)
    function sum(num, acc=0) {
    console.log(num + acc);
    return val => sum(val, num + acc);
    }

  • @user-gt7rz5uw5z
    @user-gt7rz5uw5z 4 года назад +2

    Как стать патроном? Где написано?

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

      Так трудно описание под видео посмотреть?

  • @user-hd1ix3vg9l
    @user-hd1ix3vg9l 4 года назад +1

    Ждём стрим

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

    А можно сделать что бы выводилось только последний раз?

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

      Пикни есди узнаешь ответ.

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

      @@fpv_am Ок. Костылем точно можно, через другую функцию или глобальную переменную, но как именно в одной функции пока не знаю.

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

      Я на собесе переопределил метод toString() для этого. Не перезвонили)

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

      @@yobalomtik Переопределять базовые методы это бич JSа)

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

    более краткий вариант
    let sum = function (num) {
    const result = (this.result || 0) + num
    console.warn(result);
    return sum.bind({result});
    }

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

    Видео не смотрел, сорри, некогда. Первое, что пришло в голову, если нужно именно вернуть сумму, а не вывод процесса в console.log:
    function sum(a, acc) {
    if (a === undefined) return acc;
    return (b) => {
    return sum(b, a+(acc||0));
    }
    }
    sum(1)();
    // 1
    sum(1)(2)(3)(4)();
    // 10

  • @spaceman-gamecrack2671
    @spaceman-gamecrack2671 4 года назад

    Предлагаю загадку: есть двухмерный массив, где 1 - часть реки, 0 - земля, нужно написать функцию которая выведет суммы длин всех рек: 7, 3, 2
    [ [1, 0, 0, 1, 0], [1, 1, 0, 1, 1], [0, 1, 1, 0, 0], [1, 0, 1, 1, 0], [1, 0, 0, 0, 0] yadi.sk/i/pE_91KDtTjhlJg

  • @Mike-hp3fh
    @Mike-hp3fh 4 года назад

    Первый вариант функции sum более производительный, т.к. он не создает каждый раз новую функцию. Но второй вариант sum может ветвиться. Если это ветвление не нужно, то приоритет конечно остается за производительностью, поэтому я бы выбрал первую функцию.

    • @Dmytro-Tsymbaliuk
      @Dmytro-Tsymbaliuk 4 года назад

      если приоритет за производительностью, то нужно выбирать другой ЯП

    • @Mike-hp3fh
      @Mike-hp3fh 4 года назад

      @@Dmytro-Tsymbaliuk это не зависит от языка программирования, на любом языке первый вариант будет быстрее.
      И JS компилируется довольно производительный машинный код. Я не думаю, что найдется какой-то функциональный язык, который скомпилирует второй вариант программы значительно лучше JS.

    • @Dmytro-Tsymbaliuk
      @Dmytro-Tsymbaliuk 4 года назад

      @@Mike-hp3fh так надо компилировать человеческий код, плюсы будут намного быстрее

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

    Я ее не правильно понял, я решил что она должна возвращать объект который имеет функцию tostring() чтобы если результат в консоль выводишь он бы автоматически в строку числа переводился. Мне не ответили.

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

      Всё правильно думал. Этот объект с функцией toString - есть твоя возвращаемая функция. В JS всё есть объект. Собственно, тебе только оставалось переопределить метод toString возвращаемой функции, чтобы он возвращал результат суммирования.

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

      В Firefox даже если переопределить методы toString или valueOf, при простом выводе именно в консоль будет выводиться сам объект, например. Одна из причин, отчего этот способ ущербный и подходит только для ответа на интервью.

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

      @@Boortwint формулировка, что "В JS всё есть объект." некорректная

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

      ​@@kyrylo_alekseev
      в консоль выводиться будет не сам объект, а его строковое представление.
      "этот способ ущербный и подходит только для ответа на интервью."
      Этот способ по сути и был реализован для ответа на интервью. Так как он, по твоим же словам, подходит для этих целей, то не такой он уж и ущербный.
      P.S. Говоря о объектной природе JS, я не брал во внимание 7 примитивов. Они не объекты. Это верно.

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

      @@Boortwint "в консоль выводиться будет не сам объект, а его строковое представление."
      Или не будет, если это Firefox. Как я и написал уже

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

    Каррирование?

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

    Задача многоконального доступа. Кода есть один ресурс и много независимых потребиттелей каторым рандомно нужен этот ресурс. Как сделать что бы они все вместе не юзали один ресурс

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

    У меня есть уникальная задача из реального собеседования если инетересно могу поделиться?!

  • @88Maxwells
    @88Maxwells 3 года назад

    У меня одного горит жопа от "old_console" ? underscore в JS втф....????

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

      camel case рулит, но как-то само собой получилось )

    • @88Maxwells
      @88Maxwells 3 года назад

      @@S0ERDEVS ничего не имею против underscore, но стандарт есть стандарт )Так то, видео норм

  • @user-gt7rz5uw5z
    @user-gt7rz5uw5z 4 года назад

    Вроде всё правильно. А Вы говорите о себе. Каждого посетителя интересует он сам. И нет контакта. Жаль, не интересно.

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

    Остановился на 3:35. Но пока немного офигиваю, дорогая редакция. Напишите функцию, которая выдаёт 1 3 6... бла-бла-бла вот функция, запускаем и результат:
    1 1 3 6...
    Тадам! Стопэ, это же неправильно по условию? Или я чего-то не понимаю? :)))))
    Ладно смотрю дальше.

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

      Там 2 вызова было.

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

      @@justkrybik Серьёзно? А чо не 3? :)))
      Да не я так. С пьяных глаз. Извиняюсь.

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

      @@justkrybik Да-да, согласен. Там же сначала sum(1) было. Извиняюсь, туплю и невнимаетелен. :)

  • @user-ir5zd2jy9e
    @user-ir5zd2jy9e 4 года назад

    С мобилы - мелкий текст.
    Клаву иногда громче диктора слышно.

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

    первый лайк)

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

    Объясните, пожалуйста, мне глупому - А в чём вообще смысл городить эту жуткую химеру из цепочки вызовов функции, когда все значения можно передать простым массивом, с которым проще работать?
    Я сколько не думаю, всё не могу придумать хоть какое-то практическое применение для подобного, где бы подобная цепочка пригодилась.

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

      Это просто популярный вопрос на знание определённых вещей

  • @Carrion-Crow
    @Carrion-Crow 4 года назад

    Извините если бы мне такое дали на собесе я бы послал их нахрен и не кого бы из знакомых не пускал в эту компанию. Такое дерьмо если они пишут у себя то им не программист нужен а уборщик дерьма

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

      типа очень простая?

    • @Carrion-Crow
      @Carrion-Crow 3 года назад +1

      @@fellainthewagon7166 типа заморочество и не имеет смысла, это код просто потому что, который сложно читать, а всё что сложно читать это плохой код и значит его нужно переписать. А такие вещи как тут вообще не должны существовать в продакшене, и еще, то что джс так может не значит что это хорошо

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

    Если бы на проде это гавно увидел, то попросил бы чтобы переделал.
    Работаю фулстеком, до того как не начал мелльком смотреть мок собеседования и не знал что так можно.
    Ну типо и что?) откуда столько фанатизма вокруг синтаксиса?
    У меня иногда такое ощущение, что самый говённый код рождается от людей, которые таких задачек гору нарешали.

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

    Это почти декоратор=)))!!!Функция возвращает функцию😎😎😎!!!А он не даёт функциянальному коду умирать!!!
    function f(){
    let count=0;
    console.log(count++);
    }
    f();//1
    f();//1
    =)))