今すぐタスクを完了する予定のふりをしましょう。機能的言語の原則に従って、できるだけJavaScriptコードを書きます。
次の一連の記事は、あなたと私がこの旅を始めることです。まず、私たちはあなたの心の中にある可能性のある機能的な言語エラーの概念のいくつかを修正する必要があります。
JS言語の機能式は深刻に誤解されています。
明らかに、JavaScriptの機能パラダイムを毎日使用したい開発者はかなり多くいます。これらのことを本当に理解していないJavaScript開発者の大部分があると思います。
この理由は、Webサーバーで使用されるほとんどの開発言語がCから派生しており、誰もがこれらの言語が機能的な言語ではないことを誰もが知っているからだと思います。
通常、2つのレベルの混乱があります。最初のレイヤーは、次の例の使用に関するものです。これは、jQueryで非常に一般的な使用法です。
$( "。signup")。クリック(function(event){$( "#signupmodal")。show(); event.preventdefault();});上記のコードでは、JavaScriptの悪名高いコールバック関数であるパラメーターとして匿名関数を渡します。これらの機能は呼び出されますか?全くない!
上記の例は、機能的言語の重要な機能を示しています。関数はパラメーターです。一方、この例は、3行のコードのみを使用して違反できるほぼすべての機能プログラミングパラダイムに違反しています。
疑いの第2レベルはより微妙です。これをチェックしてください:数人のファッショナブルなJS開発者だけがこのように自分自身を見ています:
まあ、それは本当に良いです!しかし、私はすでに機能的なプログラミングを完全に理解しており、すべてのプロジェクトでunderscore.jsを使用しています。
Underscore.jsは非常に有名でユビキタスなJavaScriptライブラリです。たとえば、単語のセットがあり、各単語に最初の2文字が必要であるとします。これは、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));
慎重に考えると、このコード行は上記の5行と同じ効果があります。多くの単語は、単なるパラメーターまたはプレースホルダーです。実際のロジックは、意味のある方法でマップ関数、最初の関数、および定数2を組み合わせることです。
一部の人々は疑問に思っているかもしれません:この例の魔法は何ですか?結局のところ、どんな例でも魔法のようだと言うのは少し自慢のようですよね?
次の2つの記事を使用して、上記の例が魔法のようなものを説明する予定です。興味がある場合は、読み続けることができます。
この一連のブログは、機能プログラミングの美しさをJavaScriptコードに適用する方法を支援します。
次のセクションでは、JavaScript言語で機能的および非機能的なさまざまな要素について説明します。この知識により、これらの要素を統合し、JavaScriptでのパフォーマンスを理解することにより、脳内の機能的プログラミングの完全なシステムをゆっくりと形成できます。