JavaScript の高階関数を理解する

DDD
DDDオリジナル
2024-11-20 11:39:461026ブラウズ

Razumevanje funkcija višeg reda (Higher-Order Functions) u JavaScript-u

JavaScript を学習している場合は、おそらく 高階関数 という用語に遭遇したことがあるでしょう。複雑そうに聞こえますが、それほど複雑ではありません。 JavaScript は関数型プログラミング言語として、関数ベースのプログラミングにおいて重要なこれらの関数の使用を可能にします。

関数型プログラミング

関数プログラミング は、主要な構成要素としての関数の作成と使用を意味します。このアプローチでは、関数をパラメータとして他の関数に渡すことも、結果として返すこともできます。この考え方により、組織的かつ効率的なコード記述が可能になります。

ファーストクラスの機能

JavaScript は関数を「第一級市民」として扱います。これは、関数がオブジェクトであることを意味します。つまり、変数に割り当てたり、パラメーターとして渡したり、数値や文字列などのさまざまなコンテキストで使用したりできる、特定の種類のオブジェクトです。

:

function pozdrav() {
  console.log('Zdravo, svete!');
}
pozdrav();  // Ispisuje 'Zdravo, svete!'

// Dodavanje svojstva funkciji
pozdrav.jezik = 'srpski';
console.log(pozdrav.jezik); // Ispisuje 'srpski'

変数への関数の代入

JavaScript では、関数を変数に割り当てることができます:

const kvadrat = function(x) {
  return x * x;
};
console.log(kvadrat(5));  // Ispisuje 25

関数をパラメータとして渡す

ファーストクラス関数の主な機能の 1 つは、それらの関数を引数として他の関数に渡す機能です。

function formalniPozdrav() {
  console.log("Kako ste?");
}
function neformalniPozdrav() {
  console.log("Šta ima?");
}
function pozdravVrsta(vrsta, formalan, neformalan) {
  if (vrsta === 'formalan') {
    formalan();
  } else if (vrsta === 'neformalan') {
    neformalan();
  }
}
pozdravVrsta('neformalan', formalniPozdrav, neformalniPozdrav);  // Ispisuje 'Šta ima?'

高次関数

高次関数 は、他の関数を引数として受け取るか、結果として返す関数です。これにより、よりエレガントで簡潔なコード記述が可能になります。例には、map、filter、reduce.

メソッドが含まれます。

map メソッド

map は、既存の配列の各要素に対して関数を呼び出して新しい配列を作成します。

マップメソッドがありません:

const arr1 = [10, 20, 30, 40, 50];
const arr2 = [];
for (let i = 0; i < arr1.length; i++) {
  arr2.push(arr1[i] * 2);
}
console.log(arr2);  // [20, 40, 60, 80, 100]

map メソッドを使用する:

const arr1 = [10, 20, 30. 40, 50];
const arr2 = arr1.map(item => item * 2);
console.log(arr2);  // [20, 40, 60, 8-, 100]

フィルターメソッド

フィルターは、指定された条件を満たすすべての要素を含む新しい配列を作成します。

const osobe = [
  { ime: 'Pera', godine: 13 },
  { ime: 'Mika', godine: 18 },
  { ime: 'Laza', godine: 64 },
  { ime: 'Ana', godine: 10 },
];
const punoletni = osobe.filter(osoba => osoba.godine >= 18);
console.log(punoletni);  // [ { ime: 'Mika', godine: 18 }, { ime: 'Laza', godine: 64 } ]

reduce メソッド

reduce は配列の各メンバーに対して関数を実行し、一意の値を返します。

reduce を使用した例:

const arr = [4, 6, 10, 5, 25];
const suma = arr.reduce((akumulator, vrednost) => akumulator + vrednost, 0);
console.log(suma);  // 50

高階関数の作成

JavaScript に組み込みのマップ メソッドがなかったらと想像してみてください。自分で作成することもできます:

function mapiraj(arr, fn) {
  const noviNiz = [];
  for (let i = 0; i < arr.length; i++) {
    noviNiz.push(fn(arr[i]));
  }
  return noviNiz;
}
const duzine = mapiraj(['JavaScript', 'Python'], item => item.length);
console.log(duzine);  // [10, 6]

結論

高階関数により、JavaScript のコードの柔軟性と簡素化が可能になります。これらの機能を使用すると、コードがより簡潔で、整理され、保守しやすくなります。

以上がJavaScript の高階関数を理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。