Javascript как функциональный язык

Я хочу разобраться с концепциями функционального программирования.

Я много лет использовал Javascript для написания сценариев на стороне клиента в веб-приложениях, и, помимо использования прототипов, это были простые манипуляции с DOM, проверка ввода и т. д.

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

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

Итак, в итоге, является ли Javascript хорошим выбором для изучения концепций функционального программирования? Какие возможности Javascript актуальны / поддерживают функциональное программирование?

Лучший способ пойти - полностью функциональный. Тогда вы поймете плюсы и минусы.

andho 28.12.2012 17:43
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
61
1
17 949
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

Ответ принят как подходящий

JavaScript поддерживает функции первого класса. См. Используйте методы функционального программирования для написания элегантного JavaScript.

Хорошая ссылка, именно то, что я ищу.

Ash 28.09.2008 06:55

Хотя javascript в некоторой степени поддерживает FP, он не поощряет его напрямую. Вот почему существуют такие проекты, как Функционал Оливера Стила, чтобы восполнить пробелы. Поэтому я бы не рекомендовал его для изучения FP. Попробуйте вместо этого F#.

Javascript - это многопарадигмальный язык. Если ваша цель - изучить концепции функционального языка, попробуйте начать с чистого функционального языка, такого как OCaml или Haskell.

Что еще раз означает «O» в «OCaml»?

xmjx 29.09.2008 23:36

+1. Objective Caml, так вот, он не чисто функциональный, но и многопарадигмальный, так как добавляет объектно-ориентированный подход.

Dereckson 22.12.2013 02:49

Я бы сказал, что, хотя вы можете быстро понять некоторые концепции функционального программирования с помощью JavaScript, последовательное использование JavaScript, как языка функционального программирования, не является обычной практикой. По крайней мере, очевидно, не часто. Большинство людей не публикуют учебники, в которых подробно описывается, как выполнять функциональное программирование с помощью JavaScript - один, на который указал Марксидад, на самом деле является довольно приличным примером, но вы не найдете его много. Функциональные аспекты не всегда очевидны, как когда люди используют замыкания в JavaScript, но не подозревают, что они это делают.

Идея о том, что вы передадите две функции в качестве аргументов третьей функции, а затем получите возвращаемое значение, которое будет некоторым выполнением, связанным с первыми двумя функциями, является продвинутой техникой, которая почти всегда появляется только в ядре полноценных библиотек, таких как jQuery. . Самостоятельно выполняющиеся анонимные функции и тому подобное получили широкое распространение, но до сих пор не используются постоянно. Вместо этого в большинстве руководств основное внимание уделяется объектно-ориентированным возможностям JavaScript, таким как создание свойств и методов, область видимости, контроль доступа, а также как использовать свойство прототипа конструкторов. Честно говоря, если вам нужно функциональное программирование, я бы выбрал язык, который известен своими возможностями.

Полезные моменты, спасибо. Более специализированный функциональный язык может быть лучшим выбором. В конце концов, я мог бы взглянуть на F#.

Ash 28.09.2008 09:56

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

Я бы порекомендовал прочитать Маленький интриган, довольно тонкую книгу о рекурсии и хорошее введение в функциональный стиль. Хотя он ориентирован на Scheme, его можно легко применить к JavaScript, см. http://javascript.crockford.com/little.html. Я нашел это действительно полезным в моей разработке javascript, хотя к концу это становится довольно сложным.

Я не помню, кто это сказал, но javascript был назван «Схема с синтаксисом Algol». Так что для изучения Scheme / Lisp Javascript - неплохое начало. Однако обратите внимание, что функциональные языки, такие как Lisp, сильно отличаются от чисто функциональных языков, таких как Haskell.

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

JavaScript высшего порядка и Маленький Javascripter уже упоминались. Это оба отличные тексты. Кроме того, Программирование высшего порядка в Javascript может быть более простым запуском.

Другие вопросы по теме