Учебник о том, как реализовать бесконечное каррирование в 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 и присоединитесь к нашему Коллективу талантов.