回答編集履歴

3

見出しを修正。関数宣言\(FunctionDeclaration\)と関数定義\(Function Definitions\) -> 関数宣言\(FunctionDeclaration\)と関数式\(Functio

2017/08/25 03:39

投稿

think49
think49

スコア18162

test CHANGED
@@ -252,7 +252,7 @@
252
252
 
253
253
 
254
254
 
255
- ### 関数宣言(FunctionDeclaration)と関数定義(Function Definitions)
255
+ ### 関数宣言(FunctionDeclaration)と関数(FunctionExpression)
256
256
 
257
257
 
258
258
 
@@ -340,6 +340,8 @@
340
340
 
341
341
  - 2017/08/21 11:41 「関数宣言(FunctionDeclaration)と関数定義(Function Definitions)」の節を追記
342
342
 
343
+ - 2017/08/25 12:38 見出しを修正。関数宣言(FunctionDeclaration)と関数定義(Function Definitions) -> 関数宣言(FunctionDeclaration)と関数式(FunctionExpression)
344
+
343
345
 
344
346
 
345
347
  Re: COCO-nuts さん

2

関数宣言\(FunctionDeclaration\)と関数定義\(Function Definitions\)

2017/08/25 03:39

投稿

think49
think49

スコア18162

test CHANGED
@@ -252,4 +252,94 @@
252
252
 
253
253
 
254
254
 
255
+ ### 関数宣言(FunctionDeclaration)と関数定義(Function Definitions)
256
+
257
+
258
+
259
+ - [14.1 Function Definitions - ECMAScript® 2017 Language Specification](http://www.ecma-international.org/ecma-262/8.0/#sec-function-definitions)
260
+
261
+
262
+
263
+ 上記リンク先では、大別して次の2つの Syntax が定義されています。
264
+
265
+
266
+
267
+ - 関数宣言 (FunctionDeclaration)
268
+
269
+ - 関数式 (FunctionExpression)
270
+
271
+
272
+
273
+ 関数定義は関数宣言と関数式を総合した名称です。
274
+
275
+ 従って、**「関数定義 === 関数宣言」ではありません**し、関数宣言と関数式は別個の存在として定義されています。
276
+
277
+
278
+
279
+ ```JavaScript
280
+
281
+ function foo () { console.log('foo'); }
282
+
283
+ ```
284
+
285
+
286
+
287
+ 上記コードは関数宣言(FunctionDeclaration)を定義しています。
288
+
289
+
290
+
291
+ ```JavaScript
292
+
293
+ (function bar () {
294
+
295
+ console.log('bar');
296
+
297
+ }());
298
+
299
+ ```
300
+
301
+
302
+
303
+ 上記コードは関数式(FunctionExpression)を定義しています。
304
+
305
+
306
+
307
+ ```JavaScript
308
+
309
+ var piyo = function piyo () {
310
+
311
+ console.log('piyo');
312
+
313
+ };
314
+
315
+ ```
316
+
317
+
318
+
319
+ 上記コードは関数式を定義した後に変数 piyo を定義しています。
320
+
321
+
322
+
323
+ 「変数文」と「関数式」の定義が独立している点に注意して下さい。
324
+
325
+ 厳密には、変数文の処理過程で変数宣言が行われている事になります(詳細は「定義する」の節を参照して下さい)。
326
+
327
+
328
+
329
+ 1. 関数式 piyo を定義する
330
+
331
+ 2. 変数 piyo を宣言する
332
+
333
+ 3. 変数 piyo を定義する
334
+
335
+
336
+
337
+ ### 更新履歴
338
+
339
+
340
+
341
+ - 2017/08/21 11:41 「関数宣言(FunctionDeclaration)と関数定義(Function Definitions)」の節を追記
342
+
343
+
344
+
255
345
  Re: COCO-nuts さん

1

関数宣言を定義する

2017/08/21 02:42

投稿

think49
think49

スコア18162

test CHANGED
@@ -142,9 +142,9 @@
142
142
 
143
143
  ここから読み取れるのは、宣言してから定義するという順番性です。
144
144
 
145
- 「関数宣言を定義する」とは、関数を「宣言」する事で「定義」が完了しています。
145
+ 「関数宣言を定義する」とは、関数を「宣言」する事で「定義」が完了する事を表しています。
146
-
146
+
147
- ですので、「関数定義を宣言する」のように逆の意味にすることは出来ません。
147
+ ですので、「関数定義を宣言する」のように逆の順番で表現することは出来ません。
148
148
 
149
149
 
150
150