Давайте притводим, что сейчас мы собираемся выполнить задачу: напишите код JavaScript как можно больше в соответствии с принципами функциональных языков.
Следующая серия статей - позволить вам и мне начать это путешествие. Во -первых, нам нужно исправить некоторые из концепций функциональных языковых ошибок, которые могут быть в вашем уме.
Функциональные формулы на языке JS серьезно неправильно поняты.
Очевидно, что есть довольно много разработчиков, которые хотят использовать функциональную парадигму JavaScript каждый день. Я бы сказал, что существует большая часть разработчиков JavaScript, которые на самом деле не понимают этих вещей.
Я думаю, что причина этого заключается в том, что большинство языков разработки, используемых на веб -сервере, получены из C, и все знают, что эти языки не являются функциональными языками.
Как правило, есть два уровня путаницы. Первый слой посвящен использованию в следующем примере, который является очень распространенным использованием в jQuery:
$ (". QUINUP"). Click (function (event) {$ ("#signupmodal"). Show (); Event.preventDefault ();});В приведенном выше коде: мы передаем анонимную функцию в качестве параметра, которая является печально известной функцией обратного вызова в JavaScript. Будут ли называться эти функции? Нисколько!
Приведенный выше пример иллюстрирует ключевую особенность функционального языка: функция является параметром. С другой стороны, этот пример нарушает почти все функциональные парадигмы программирования, которые могут быть нарушены с использованием только трех строк кода.
Второй уровень сомнения более тонкий. Посмотрите на это: только несколько модных разработчиков JS смотрят на себя так:
Ну, это действительно хорошо! Но у меня уже есть полное понимание функционального программирования, и я использую underscore.js во всех моих проектах.
Underscore.js - очень известная и вездесущая библиотека JavaScript. Например: предположим, что у меня есть набор слов, и мне нужны первые две буквы для каждого слова. Это очень просто писать с помощью underscore.js:
var FirstTwoleTters = function (words) {return _.map (words, function (word) {return _.first (word, 2);});};Посмотрите на этот пример Javascript. Я использовал изысканные и практические функции в формуле функции: _.map и _.first. Что вы думаете об этом?
Хотя такие функции, как underscore.js и _.map, оба являются полезными функциональными парадигмами, объединение этих вещей в этом примере все еще затрудняет понимание. Нам действительно нужно это сделать?
Если мы начнем думать о том, как быть более «функциональным», возможно, мы сможем переписать приведенный выше пример, как это:
// ... немного Magicvar FirstTwoleTters = map (First (2));
Если вы внимательно думаете об этом, эта строка кода имеет тот же эффект, что и вышеупомянутые строки. Много слов - это просто параметры или заполнители. Реальная логика состоит в том, чтобы объединить функцию карты, первую функцию и постоянную 2 значимо.
Некоторые люди могут задаться вопросом: какова магия в этом примере? В конце концов, это немного похоже на хвастовство, чтобы сказать, что любой пример волшебный, верно?
Я планирую использовать следующие две статьи, чтобы объяснить, что вышеупомянутый пример волшебен. Если вам любопытно, вы можете продолжить читать.
Эта серия блогов поможет вам, как применить красоту функционального программирования к вашему коду JavaScript.
В следующем разделе я буду обсуждать различные элементы функциональных и нефункциональных на языке JavaScript. С помощью этих знаний мы можем медленно сформировать полную систему функционального программирования в нашем мозге, интегрируя эти элементы вместе и понимать их производительность в JavaScript.