From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- files/ja/glossary/first-class_function/index.html | 108 ++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 files/ja/glossary/first-class_function/index.html (limited to 'files/ja/glossary/first-class_function/index.html') diff --git a/files/ja/glossary/first-class_function/index.html b/files/ja/glossary/first-class_function/index.html new file mode 100644 index 0000000000..65c47009f7 --- /dev/null +++ b/files/ja/glossary/first-class_function/index.html @@ -0,0 +1,108 @@ +--- +title: First-class Function (第一級関数) +slug: Glossary/First-class_Function +tags: + - CodingScripting + - Glossary + - JavaScript +translation_of: Glossary/First-class_Function +--- +

プログラミング言語が第一級関数 (First-class functions) を持つと言われる場合、その言語の関数がその他の変数と同様に扱われることを表します。例えば、こうした言語では、関数を他の関数への引数として渡したり、他の関数から返却したり、変数の値として代入したりすることができます。

+ +

例 | 関数を変数へ代入する

+ +

JavaScript

+ +
const foo = function() {
+   console.log("foobar");
+}
+// 変数を使用して呼び出し
+foo();
+
+ +

ここでは無名関数を{{glossary("Variable", "変数")}}に代入してから、変数を使用して末尾に括弧 () を追加することで、その関数を呼び出しています。

+ +
+

関数に名前があっても、変数を使用してその関数を呼び出すことができます。名前を付けるとコードをデバッグするときに役立ちますが、呼び出し方法に影響はありません

+
+ +

例 | 引数として関数を渡す

+ +

JavaScript

+ +
function sayHello() {
+   return "Hello, ";
+}
+function greeting(helloMessage, name) {
+  console.log(helloMessage() + name);
+}
+// `sayHello` を `greeting` 関数の引数として渡す
+greeting(sayHello, "JavaScript!");
+
+ +

ここでは sayHello() 関数を greeting() 関数の引数として渡しており、関数を変数として扱っていることを示しています。

+ +
+

他の関数へ引数として渡される関数は、{{glossary("Callback function", "コールバック関数")}}と呼ばれます。 sayHello はコールバック関数です。

+
+ +

例 | 関数を返す

+ +

JavaScript

+ +
function sayHello() {
+   return function() {
+      console.log("Hello!");
+   }
+}
+
+ +

この例では、関数を他の関数から返す必要があります。 - 関数を返すことができるのは、 JavaScript では関数をとして扱っているからです。

+ +
+

関数を返す関数は高階関数と呼ばれます。

+
+ +

例に戻ると、 sayHello 関数とそこから返される無名関数を呼び出す必要があるとします。そのためには二つの方法があります。

+ +

1. 変数を使用する

+ +
const sayHello = function() {
+   return function() {
+      console.log("Hello!");
+   }
+}
+const myFunc = sayHello();
+myFunc();
+
+ +

この方法では、 Hello! メッセージが返されます。

+ +
+

他の変数を使用する必要があります。直接 sayHello を呼び出すと、帰される関数を呼び出すことなく関数自体が返されます。

+
+ +

2. 二重括弧の使用

+ +
function sayHello() {
+   return function() {
+      console.log("Hello!");
+   }
+}
+sayHello()();
+
+ +

二重括弧 ()() を使用して、返された関数を呼び出しています。

+ + -- cgit v1.2.3-54-g00ecf