From b72d6fe4c76380f34c578847dda6ae40f472eb75 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Wed, 22 Sep 2021 00:29:47 +0900 Subject: Operators/function の変換準備 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reference/operators/function/index.html | 143 --------------------- .../reference/operators/function/index.md | 143 +++++++++++++++++++++ 2 files changed, 143 insertions(+), 143 deletions(-) delete mode 100644 files/ja/web/javascript/reference/operators/function/index.html create mode 100644 files/ja/web/javascript/reference/operators/function/index.md (limited to 'files/ja/web/javascript') diff --git a/files/ja/web/javascript/reference/operators/function/index.html b/files/ja/web/javascript/reference/operators/function/index.html deleted file mode 100644 index a39cecb627..0000000000 --- a/files/ja/web/javascript/reference/operators/function/index.html +++ /dev/null @@ -1,143 +0,0 @@ ---- -title: 関数式 -slug: Web/JavaScript/Reference/Operators/function -tags: - - Function - - JavaScript - - Language feature - - Operator - - Primary Expressions - - 演算子 - - 言語機能 -translation_of: Web/JavaScript/Reference/Operators/function ---- -
{{jsSidebar("Operators")}}
- -

function キーワードは、式の中で関数を定義するために使用されます。

- -

{{jsxref("Function/Function", "Function")}} コンストラクターや{{jsxref("Statements/function", "関数宣言", "", 1)}}を用いて関数を定義することもできます。

- -
{{EmbedInteractiveExample("pages/js/expressions-functionexpression.html", "shorter")}}
- - - -

構文

- -
let myFunction = function [name]([param1[, param2[, ..., paramN]]]) {
-   statements
-};
- -

ES2015 からは{{jsxref("Functions/Arrow_functions", "アロー関数", "", 1)}}も使えます。

- -

引数

- -
-
name {{optional_inline}}
-
関数名。省略可能で、その場合は関数は無名になります。 name は関数本体のみのローカルです。
-
paramN {{optional_inline}}
-
関数に渡される引数の名前です。
-
statements {{optional_inline}}
-
関数の本体を構成する文です。
-
- -

解説

- -

関数式は関数宣言とよく似ており、ほとんど同じ書式でもあります (詳しくは {{jsxref("Statements/function", "function")}} 文を参照してください)。関数式と関数宣言の主な相違点は、関数名です。関数式では、無名関数を生成するために、関数名を省略できます。関数式は、定義するとすぐに実行する IIFE (即時実行関数)として使用できます。詳細については、{{jsxref("Functions", "関数", "", 1)}}の章を参照してください。

- -

関数式の巻き上げ

- -

JavaScript の関数式は、{{jsxref("Statements/function", "関数宣言", "#Function_declaration_hoisting", 1)}}と違って巻き上げられません。定義前に関数式を使用することはできません。

- -
console.log(notHoisted) // undefined
-// 変数名は巻き上げが行われますが、定義は行われません。そのため undefined になります。
-notHoisted(); // TypeError: notHoisted is not a function
-
-var notHoisted = function() {
-   console.log('bar');
-};
-
- -

名前付き関数式

- -

関数内でその関数自身を参照する必要がある場合は、名前付き関数式を作成する必要があります。この名前は関数本体 (スコープ) に対してのみローカルです。これにより非標準の {{jsxref("Functions/arguments/callee", "arguments.callee")}} プロパティの使用も避けられます。

- -
let math = {
-  'factit': function factorial(n) {
-    console.log(n)
-    if (n <= 1) {
-      return 1;
-    }
-    return n * factorial(n - 1);
-  }
-};
-
-math.factit(3) //3;2;1;
-
- -

関数式が代入された変数は name プロパティを持ちます。別の変数に代入しても name は変わりません。関数名が省略された場合、変数名になります (暗黙的gな名前)。関数名が存在したら、それが関数名になります (明示的な名前)。これは{{jsxref("Functions/Arrow_functions", "アロー関数", "", 1)}}にもあてはまります (アローは名前がないので変数名を暗黙的な名前として与える)。

- -
var foo = function() {}
-foo.name // "foo"
-
-var foo2 = foo
-foo2.name // "foo"
-
-var bar = function baz() {}
-bar.name // "baz"
-
-console.log(foo === foo2); // true
-console.log(typeof baz); // undefined
-console.log(bar === baz); // false (errors because baz == undefined)
-
- -

- -

無名関数の作成

- -

次の例では、無名関数を定義してそれを x に割り当てます。 関数は引数の 2 乗を返します。

- -
var x = function(y) {
-   return y * y;
-};
-
- -

関数をコールバックとして使用

- -

より一般的には{{Glossary("Callback_function", "コールバック")}}として使われます。

- -
button.addEventListener('click', function(event) {
-    console.log('button is clicked!')
-})
- -

仕様書

- - - - - - - - - - - - -
仕様書
{{SpecName('ESDraft', '#sec-function-definitions', 'Function definitions')}}
- -

ブラウザーの互換性

- -

{{Compat("javascript.operators.function")}}

- -

関連情報

- - diff --git a/files/ja/web/javascript/reference/operators/function/index.md b/files/ja/web/javascript/reference/operators/function/index.md new file mode 100644 index 0000000000..a39cecb627 --- /dev/null +++ b/files/ja/web/javascript/reference/operators/function/index.md @@ -0,0 +1,143 @@ +--- +title: 関数式 +slug: Web/JavaScript/Reference/Operators/function +tags: + - Function + - JavaScript + - Language feature + - Operator + - Primary Expressions + - 演算子 + - 言語機能 +translation_of: Web/JavaScript/Reference/Operators/function +--- +
{{jsSidebar("Operators")}}
+ +

function キーワードは、式の中で関数を定義するために使用されます。

+ +

{{jsxref("Function/Function", "Function")}} コンストラクターや{{jsxref("Statements/function", "関数宣言", "", 1)}}を用いて関数を定義することもできます。

+ +
{{EmbedInteractiveExample("pages/js/expressions-functionexpression.html", "shorter")}}
+ + + +

構文

+ +
let myFunction = function [name]([param1[, param2[, ..., paramN]]]) {
+   statements
+};
+ +

ES2015 からは{{jsxref("Functions/Arrow_functions", "アロー関数", "", 1)}}も使えます。

+ +

引数

+ +
+
name {{optional_inline}}
+
関数名。省略可能で、その場合は関数は無名になります。 name は関数本体のみのローカルです。
+
paramN {{optional_inline}}
+
関数に渡される引数の名前です。
+
statements {{optional_inline}}
+
関数の本体を構成する文です。
+
+ +

解説

+ +

関数式は関数宣言とよく似ており、ほとんど同じ書式でもあります (詳しくは {{jsxref("Statements/function", "function")}} 文を参照してください)。関数式と関数宣言の主な相違点は、関数名です。関数式では、無名関数を生成するために、関数名を省略できます。関数式は、定義するとすぐに実行する IIFE (即時実行関数)として使用できます。詳細については、{{jsxref("Functions", "関数", "", 1)}}の章を参照してください。

+ +

関数式の巻き上げ

+ +

JavaScript の関数式は、{{jsxref("Statements/function", "関数宣言", "#Function_declaration_hoisting", 1)}}と違って巻き上げられません。定義前に関数式を使用することはできません。

+ +
console.log(notHoisted) // undefined
+// 変数名は巻き上げが行われますが、定義は行われません。そのため undefined になります。
+notHoisted(); // TypeError: notHoisted is not a function
+
+var notHoisted = function() {
+   console.log('bar');
+};
+
+ +

名前付き関数式

+ +

関数内でその関数自身を参照する必要がある場合は、名前付き関数式を作成する必要があります。この名前は関数本体 (スコープ) に対してのみローカルです。これにより非標準の {{jsxref("Functions/arguments/callee", "arguments.callee")}} プロパティの使用も避けられます。

+ +
let math = {
+  'factit': function factorial(n) {
+    console.log(n)
+    if (n <= 1) {
+      return 1;
+    }
+    return n * factorial(n - 1);
+  }
+};
+
+math.factit(3) //3;2;1;
+
+ +

関数式が代入された変数は name プロパティを持ちます。別の変数に代入しても name は変わりません。関数名が省略された場合、変数名になります (暗黙的gな名前)。関数名が存在したら、それが関数名になります (明示的な名前)。これは{{jsxref("Functions/Arrow_functions", "アロー関数", "", 1)}}にもあてはまります (アローは名前がないので変数名を暗黙的な名前として与える)。

+ +
var foo = function() {}
+foo.name // "foo"
+
+var foo2 = foo
+foo2.name // "foo"
+
+var bar = function baz() {}
+bar.name // "baz"
+
+console.log(foo === foo2); // true
+console.log(typeof baz); // undefined
+console.log(bar === baz); // false (errors because baz == undefined)
+
+ +

+ +

無名関数の作成

+ +

次の例では、無名関数を定義してそれを x に割り当てます。 関数は引数の 2 乗を返します。

+ +
var x = function(y) {
+   return y * y;
+};
+
+ +

関数をコールバックとして使用

+ +

より一般的には{{Glossary("Callback_function", "コールバック")}}として使われます。

+ +
button.addEventListener('click', function(event) {
+    console.log('button is clicked!')
+})
+ +

仕様書

+ + + + + + + + + + + + +
仕様書
{{SpecName('ESDraft', '#sec-function-definitions', 'Function definitions')}}
+ +

ブラウザーの互換性

+ +

{{Compat("javascript.operators.function")}}

+ +

関連情報

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