JavaScript関数式プログラミング(Functional Programming)高次関数(Higher order functions)用法分析
2585 ワード
この例では、JavaScript関数式プログラミング(Functional Programming)高次関数(Higher order functions)の使い方について説明します.皆さんの参考にしてください.具体的には以下の通りです.
高次関数(higher-order functions)は、他の関数の関数を返すか、他の関数をそのパラメータとして使用する関数です.
パラメータとして関数を使用
関数自体が値であるため、関数をパラメータとして他の関数に渡すことができます.JavaScriptでは、Arrayなどの関数タイプのパラメータを使用する必要がある関数があります.map.
たとえば、データのセットがあります.
このデータの各項目にそれぞれ挨拶します.
上のmap法では匿名関数をそのパラメータとして用いた.この関数では、配列の各項目の前に「hi~」を追加し、mapは新しい配列を返します.この配列はgreetings変数に渡しました.
矢印関数を使用すると、より簡潔になります.
高次関数
高次関数(higher-order functions).JavaScriptでは、関数は普通のオブジェクトとあまり変わらないので、関数をパラメータとして他の関数に渡すことができます.関数に関数を返すこともできます.パラメータの関数として関数を使用するか、高次関数(higher-order functions)と呼ばれる関数を返します.
例えば、さっき使ったmapは高次関数です.関数をパラメータとして使うからです.
もう1つの例を見てみましょう.
robotは2つのパラメータ、nameとactionをサポートする関数で、ここでのactionパラメータのタイプは1つの関数です.robotでactionを返し,nameパラメータの値をactionに渡した.次にgreetという関数を定義します.パラメータがnameであることを受け入れます.この関数は文字列を返します.
次にrobotという関数を使って、その2つのパラメータの値を設定しました.nameパラメータの値は「こんにちは」で、actionパラメータの値は私たちが定義したgreetという関数です.実行結果は次のとおりです.
ハロー、こんにちは
関数を定義してみましょう.
次にrobot関数を使用します.
今回は、
byeさん、こんにちは
完全な例:
JavaScriptに関する詳細は、「JavaScript常用関数テクニック要約」、「javascriptオブジェクト向け入門チュートリアル」、「JavaScriptエラーとデバッグテクニックまとめ」、「JavaScriptデータ構造とアルゴリズムテクニックまとめ」、「JavaScript数学演算使い方まとめ」のトピックを参照してください.
JavaScriptプログラムの設計に役立つことを願っています.
高次関数(higher-order functions)は、他の関数の関数を返すか、他の関数をそのパラメータとして使用する関数です.
パラメータとして関数を使用
関数自体が値であるため、関数をパラメータとして他の関数に渡すことができます.JavaScriptでは、Arrayなどの関数タイプのパラメータを使用する必要がある関数があります.map.
たとえば、データのセットがあります.
const names = [' ', ' ', ' ']
このデータの各項目にそれぞれ挨拶します.
const greetings = names.map(function(name) {
return `hi ~ ${name}`
})
console.log(greetings)
// ["hi ~ ", "hi ~ ", "hi ~ "]
上のmap法では匿名関数をそのパラメータとして用いた.この関数では、配列の各項目の前に「hi~」を追加し、mapは新しい配列を返します.この配列はgreetings変数に渡しました.
矢印関数を使用すると、より簡潔になります.
const greetings = names.map(name => `hi ~ ${name}`)
高次関数
高次関数(higher-order functions).JavaScriptでは、関数は普通のオブジェクトとあまり変わらないので、関数をパラメータとして他の関数に渡すことができます.関数に関数を返すこともできます.パラメータの関数として関数を使用するか、高次関数(higher-order functions)と呼ばれる関数を返します.
例えば、さっき使ったmapは高次関数です.関数をパラメータとして使うからです.
もう1つの例を見てみましょう.
const robot = (name, action) => {
return action(name)
}
const greet = (name) => {
return `hello, ${name}`
}
const greeting = robot(' ', greet)
// “ hello, ”
robotは2つのパラメータ、nameとactionをサポートする関数で、ここでのactionパラメータのタイプは1つの関数です.robotでactionを返し,nameパラメータの値をactionに渡した.次にgreetという関数を定義します.パラメータがnameであることを受け入れます.この関数は文字列を返します.
次にrobotという関数を使って、その2つのパラメータの値を設定しました.nameパラメータの値は「こんにちは」で、actionパラメータの値は私たちが定義したgreetという関数です.実行結果は次のとおりです.
ハロー、こんにちは
関数を定義してみましょう.
const goodbye = (name) => {
return `bye, ${name}`
}
次にrobot関数を使用します.
const byeBye = robot(' ', goodbye)
今回は、
byeさん、こんにちは
完全な例:
const robot = (name, action) => {
return action(name)
}
const greet = (name) => {
return `hello, ${name}`
}
const greeting = robot(' ', greet)
console.log(greeting)
const goodbye = (name) => {
return `bye, ${name}`
}
const byeBye = robot(' ', goodbye)
console.log(byeBye)
JavaScriptに関する詳細は、「JavaScript常用関数テクニック要約」、「javascriptオブジェクト向け入門チュートリアル」、「JavaScriptエラーとデバッグテクニックまとめ」、「JavaScriptデータ構造とアルゴリズムテクニックまとめ」、「JavaScript数学演算使い方まとめ」のトピックを参照してください.
JavaScriptプログラムの設計に役立つことを願っています.