[JS]高次関数

2954 ワード

高次関数


パラメータ(パラメータ)または戻り関数の関数として関数を受信します。 パラメータとして別の関数を受信します。 function double(num){//コールバック関数 return num * 2; } function doublenum(func,num){//高次関数 return func(num); } let output = doubleNum(double, 4); console.log(output); // -> 8 関数を返すとき 関数加算器//高次関数(匿名関数を使用) 戻り関数(num){//匿名関数 return num + added; }; } let output = adder(5)(3); // -> 8 console.log(output); // -> 8 //adderが返す関数を変数に格納できます。 //javascriptの関数は1級オブジェクトです。 const add3 = adder(3); output = add3(2); console.log(output); // -> 5 パラメータとして関数を受信し、関数を返します。 function double(num){//コールバック関数 return num * 2; } 関数doubleAdder(add,func){//高次関数 const doubled = func(added); return function (num) { return num + doubled; }; } doubleAdder(5, double)(3); // -> 13 //doubleAdderが返す関数を変数に格納できます(一級オブジェクト) const addTwice3 = doubleAdder(3, double); addTwice3(2); // --> 8

コールバック関数


他の関数(呼び出し者)パラメータとして渡される関数 コールバック関数を渡す関数は、このコールバック関数(invoke)を呼び出すことができます。

第一類公民


他のすべてのオブジェクトの汎用演算をサポートするオブジェクトを指します。 JavaScriptは、関数を1レベルのオブジェクトと見なします。 変数に割り当てることができます 他の関数に渡すパラメータ(パラメータ) 他の関数の結果として返すことができます

配列組み込みメソッド


forEach アレイ要素ごとに指定された関数を実行します(単純な繰り返し) const a = [1,2,3,4,5]; a.forEach(function(el){ console.log(el); // 1,2,3,4,5 })

find 与えられた判別関数の最初の要素値を満たす方法を返す const a = [1,2,3,4,5]; a.find(function(el) { return el > 3 console.log(el); // 4 })

filter 与えられた関数でテストされたすべての要素を収集し、新しい配列に戻ります。 アレイ内の各要素 特定の論理(関数)、事実(boolean)に基づいた場合 ぶんかつ const a = [1,2,3,4,5]; a.filter(function(el) { return el % 2 === 0 console.log(el); // [2,4] })

map アレイ内の各要素に対して指定された関数を呼び出した結果をまとめ、新しいアレイに戻します。 アレイ内の各要素 特定の論理(関数)に基づいて 他の要素として指定(map) const a = [1,2,3,4,5]; a.map(function(el) { return el * 2 console.log(el); // [2,4,6,8,10] })

reduce アレイ内の各要素に対して指定されたreducer関数を実行し、結果値を返します。 アレイ内の各要素 特定の凝縮方法(関数)による あなたが望む形で ぎょうしゅう アキュムレータ:アキュムレータ(acc)アキュムレータacc CurrentValue:現在の値(cur) CurrentIndex:現在のインデックス(idx) Array:ソースアレイ(src) const array = [1,2,3,4,5]; array.reduece(function(acc, cur) { return acc + cur }, 0) // 15

sort アレイ内の要素を適切な位置(通常はプリソート)に揃え、アレイに戻ります。 非コピーの円配列を整列 const a = [1, 30, 4, 21, 10000]; a.sort(); console.log(a); // [1, 10000, 21, 30, 4] const a = ['March', 'Jan', 'Feb', 'Dec']; a.sort(); console.log(a); // ['Dec', 'Feb', 'Jan', 'March']

some アレイ内の任意の要素(または)が所定の判別関数を通過するかどうかをテストします。 空の配列を呼び出すときの無条件false const a = [1, 2, 3, 4, 5]; a.some(function(el) { return el % 2 === 0 console.log(a); // true })

every アレイ内のすべての要素(and)が所定の判別関数を通過するかどうかをテストします。 空の配列を呼び出すときの無条件true const a = [1, 30, 39, 29, 10, 13]; a.every(function(el) { return el < 40 console.log(a); // true })