関数型プログラミングはプログラミング パラダイムです
1 関数は最初の市民です。値を返すことも、他の関数のパラメーターとして使用することもできます
//console是一个函数 function con(v){ console.log(v) } // execute 也是一个函数 function execute(fn){ fn(1) } //将con函数作为参数传进execute函数 execute(con) // 1
2 自然言語に近い書き方
シャオチーは食事を終えて風呂に入りました。 Eat().bathe()
と表現できます。// 吃饭函数 function eat(eat){ this.e = eat; return this; } // 洗澡函数 function bathe(bathe){ this.b = bathe; return this; } var person = eat("晓池在吃饭").bathe("晓池去洗澡了"); console.log(person.e) // 晓池在吃饭 console.log(person.b) // 晓池去洗澡了
関数型プログラミングの 3 つの特徴
関数型プログラミングでは、匿名関数、つまり名前のない関数が非常に一般的で、関数を完成させるためにそれら (未使用の関数) を使用する必要があることがあります。
// 自定义each函数 function each(arr,func){ var length = arr.length; for(var i = 0 ;i <length; i++){ func(i,arr[i]) } } // 执行each函数,传进一个匿名函数作为该函数的参数 each([1,2,3],function(i,v){ console.log('key:' + i + ',value:' +v); }); //输出内容 //key:0,value:1 //key:1,value:2 //key:2,value:3
カリー化: カリー化は、複数のパラメーターを受け入れる関数を 1 つのパラメーター (元の関数の最初のパラメーター) を受け入れる関数に変換し、残りのパラメーターを受け入れて結果を返す新しい関数を返す手法です。
//定义add函数,并返回一个函数 function add(num){ return function(x){ return num + x; } } add1 = add(1) console.log(add1(3)) // 4
高階関数: パラメータとして関数がある場合、または関数が内部で関数を返す場合、その関数を高階関数と呼ぶことができます。上記の各関数は高階関数の一種と考えられます。
結論
実際のアプリケーションでは、関数型またはオブジェクト指向に限定されず、通常はこの 2 つが混合されています。実際、多くの主流のオブジェクト指向言語は、いくつかの機能を追加するなど、常に改良されています。待てよ、JavaScript では、この 2 つのコードが非常にシンプルで美しいだけでなく、デバッグも簡単になります。