回答編集履歴
3
見出しを修正。関数宣言\(FunctionDeclaration\)と関数定義\(Function Definitions\) -> 関数宣言\(FunctionDeclaration\)と関数式\(Functio
answer
CHANGED
@@ -125,7 +125,7 @@
|
|
125
125
|
また、「ユーザ定義関数(User-defined function)」という言葉はありますが、「ユーザ宣言関数(user-declared function)」という言葉は読んだ覚えがありません。
|
126
126
|
これも宣言してから定義するという順番性を表しているのかもしれません。
|
127
127
|
|
128
|
-
### 関数宣言(FunctionDeclaration)と関数
|
128
|
+
### 関数宣言(FunctionDeclaration)と関数式(FunctionExpression)
|
129
129
|
|
130
130
|
- [14.1 Function Definitions - ECMAScript® 2017 Language Specification](http://www.ecma-international.org/ecma-262/8.0/#sec-function-definitions)
|
131
131
|
|
@@ -169,5 +169,6 @@
|
|
169
169
|
### 更新履歴
|
170
170
|
|
171
171
|
- 2017/08/21 11:41 「関数宣言(FunctionDeclaration)と関数定義(Function Definitions)」の節を追記
|
172
|
+
- 2017/08/25 12:38 見出しを修正。関数宣言(FunctionDeclaration)と関数定義(Function Definitions) -> 関数宣言(FunctionDeclaration)と関数式(FunctionExpression)
|
172
173
|
|
173
174
|
Re: COCO-nuts さん
|
2
関数宣言\(FunctionDeclaration\)と関数定義\(Function Definitions\)
answer
CHANGED
@@ -125,4 +125,49 @@
|
|
125
125
|
また、「ユーザ定義関数(User-defined function)」という言葉はありますが、「ユーザ宣言関数(user-declared function)」という言葉は読んだ覚えがありません。
|
126
126
|
これも宣言してから定義するという順番性を表しているのかもしれません。
|
127
127
|
|
128
|
+
### 関数宣言(FunctionDeclaration)と関数定義(Function Definitions)
|
129
|
+
|
130
|
+
- [14.1 Function Definitions - ECMAScript® 2017 Language Specification](http://www.ecma-international.org/ecma-262/8.0/#sec-function-definitions)
|
131
|
+
|
132
|
+
上記リンク先では、大別して次の2つの Syntax が定義されています。
|
133
|
+
|
134
|
+
- 関数宣言 (FunctionDeclaration)
|
135
|
+
- 関数式 (FunctionExpression)
|
136
|
+
|
137
|
+
関数定義は関数宣言と関数式を総合した名称です。
|
138
|
+
従って、**「関数定義 === 関数宣言」ではありません**し、関数宣言と関数式は別個の存在として定義されています。
|
139
|
+
|
140
|
+
```JavaScript
|
141
|
+
function foo () { console.log('foo'); }
|
142
|
+
```
|
143
|
+
|
144
|
+
上記コードは関数宣言(FunctionDeclaration)を定義しています。
|
145
|
+
|
146
|
+
```JavaScript
|
147
|
+
(function bar () {
|
148
|
+
console.log('bar');
|
149
|
+
}());
|
150
|
+
```
|
151
|
+
|
152
|
+
上記コードは関数式(FunctionExpression)を定義しています。
|
153
|
+
|
154
|
+
```JavaScript
|
155
|
+
var piyo = function piyo () {
|
156
|
+
console.log('piyo');
|
157
|
+
};
|
158
|
+
```
|
159
|
+
|
160
|
+
上記コードは関数式を定義した後に変数 piyo を定義しています。
|
161
|
+
|
162
|
+
「変数文」と「関数式」の定義が独立している点に注意して下さい。
|
163
|
+
厳密には、変数文の処理過程で変数宣言が行われている事になります(詳細は「定義する」の節を参照して下さい)。
|
164
|
+
|
165
|
+
1. 関数式 piyo を定義する
|
166
|
+
2. 変数 piyo を宣言する
|
167
|
+
3. 変数 piyo を定義する
|
168
|
+
|
169
|
+
### 更新履歴
|
170
|
+
|
171
|
+
- 2017/08/21 11:41 「関数宣言(FunctionDeclaration)と関数定義(Function Definitions)」の節を追記
|
172
|
+
|
128
173
|
Re: COCO-nuts さん
|
1
関数宣言を定義する
answer
CHANGED
@@ -70,8 +70,8 @@
|
|
70
70
|
- [14.1 Function Definitions - ECMAScript® 2017 Language Specification](http://www.ecma-international.org/ecma-262/8.0/#sec-function-definitions)
|
71
71
|
|
72
72
|
ここから読み取れるのは、宣言してから定義するという順番性です。
|
73
|
-
「関数宣言を定義する」とは、関数を「宣言」する事で「定義」が完了しています。
|
73
|
+
「関数宣言を定義する」とは、関数を「宣言」する事で「定義」が完了する事を表しています。
|
74
|
-
ですので、「関数定義を宣言する」のように逆の
|
74
|
+
ですので、「関数定義を宣言する」のように逆の順番で表現することは出来ません。
|
75
75
|
|
76
76
|
### 定義する (define)
|
77
77
|
|