Учебник о том, как реализовать бесконечное каррирование в JavaScript.

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

console.log(sum(1)(2)(3)(4)(5)(6)());

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

Но код выглядит уродливо и жестко запрограммирован. Это не может работать для большего количества аргументов. Он может служить только для 3 аргументов. Итак, как мы можем сделать этот код более обобщенным и полезным для программиста, и, что более важно, как сделать интервьюера счастливым?

Итак, вот еще одна концепция, которая избавляет нас от выполнения повторяющихся задач.

Рекурсия

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

сумма(1)(2)(3)(4)(5)(6)……()

Базовый вариант

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

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

Код

Здесь мы снова возвращаем функцию суммы, если присутствует аргумент b. Давайте представим рекурсию для входных данных sum(1)(2)(3)().

1 — — — возвращает сумму(1)

2 — — — возвращает сумму (1+2)

3 — — — возвращает сумму (1+2+3)

А для последнего вызова у нас нет аргумента b. Итак, наша функция возвращает 1+2+3. В первых трех вызовах мы возвращаем внутреннюю функцию, которая может вместить еще один аргумент.

Если это кажется вам сложным, не волнуйтесь, потому что я не смог найти это решение с первой попытки. Мне потребовалось несколько минут и намеков от интервьюера. Я прикреплю ссылку на видео для более подробного разъяснения по этой теме, потому что сложно объяснить что-то в письменной форме.

Я также буду рекомендовать этот канал всем и каждому, так как он публикует действительно полезный контент на своем канале.

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

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

Гаурав Шарма — заядлый читатель и страстный путешественник. Он пытается жить более значимой и целеустремленной жизнью, распространяя свои знания и свой жизненный опыт! Следуйте за ним в этом новом путешествии по балансированию цифровой и физической жизни. Он живет в Уттаракханде, Индия. Он зарегистрирован в Instagram по адресу @golf._.sierra.

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Посетите наш Community Discord и присоединитесь к нашему Коллективу талантов.