回答編集履歴
3
式は単体では動作せず、文または宣言の一部としてしか使用できない
test
CHANGED
@@ -186,7 +186,7 @@
|
|
186
186
|
|
187
187
|
- 宣言と文は単体で動作する
|
188
188
|
|
189
|
-
- **式は単体では動作せず、文または
|
189
|
+
- **式は単体では動作せず、文または宣言の一部としてしか使用できない**
|
190
190
|
|
191
191
|
|
192
192
|
|
2
[参考] function キーワードで始まらないコード
test
CHANGED
@@ -316,4 +316,70 @@
|
|
316
316
|
|
317
317
|
|
318
318
|
|
319
|
+
### [参考] function キーワードで始まらないコード
|
320
|
+
|
321
|
+
|
322
|
+
|
323
|
+
「名前のない即時関数」を書く場合を想定すると、function キーワードの違いが分かります。
|
324
|
+
|
325
|
+
下記コードはGoogle Chromeで実行した結果ですが、
|
326
|
+
|
327
|
+
|
328
|
+
|
329
|
+
```JavaScript
|
330
|
+
|
331
|
+
function(){} // SyntaxError: Function statements require a function name
|
332
|
+
|
333
|
+
```
|
334
|
+
|
335
|
+
|
336
|
+
|
337
|
+
functionキーワードで始められるのは関数宣言のみの為、JavaScriptエンジンはこのコードを関数宣言として扱おうとしますが、**名前がない関数宣言**が記述されている為、SyntaxError(文法エラー)を返しています。
|
338
|
+
|
339
|
+
(※前述の通り、関数宣言は文ではない為、エラーメッセージ内の `"Function statements"` は間違いです)
|
340
|
+
|
341
|
+
|
342
|
+
|
343
|
+
`()` で括って、**functionキーワードで始まらない記述にすれば**、エラーは発生しません。
|
344
|
+
|
345
|
+
|
346
|
+
|
347
|
+
```JavaScript
|
348
|
+
|
349
|
+
(function(){}); // エラーにならない
|
350
|
+
|
351
|
+
```
|
352
|
+
|
353
|
+
|
354
|
+
|
355
|
+
`();` を末尾につけて、実行すれば、よく見る即時関数の形式になります。
|
356
|
+
|
357
|
+
|
358
|
+
|
359
|
+
```JavaScript
|
360
|
+
|
361
|
+
(function(){
|
362
|
+
|
363
|
+
console.log('Hello, World!');
|
364
|
+
|
365
|
+
})();
|
366
|
+
|
367
|
+
|
368
|
+
|
369
|
+
(function(){
|
370
|
+
|
371
|
+
console.log('Hello, JavaScript!');
|
372
|
+
|
373
|
+
}());
|
374
|
+
|
375
|
+
```
|
376
|
+
|
377
|
+
|
378
|
+
|
379
|
+
- `function` キーワードで始まっていないので、このコードは「関数宣言(FunctionDeclaration)」ではありません
|
380
|
+
|
381
|
+
- `function` キーワードで始まっていないので、このコードは「式文(ExpressionStatement)」です
|
382
|
+
|
383
|
+
|
384
|
+
|
319
385
|
Re: tanakashouzoux さん
|
1
宣言(※関数宣言を除く)
test
CHANGED
@@ -312,7 +312,7 @@
|
|
312
312
|
|
313
313
|
- `function` キーワードで始められるのは関数宣言のみ
|
314
314
|
|
315
|
-
- 間数式を格納している文または宣言は `function` キーワードで始める事は出来ない
|
315
|
+
- 間数式を格納している文または宣言(※関数宣言を除く)は `function` キーワードで始める事は出来ない
|
316
316
|
|
317
317
|
|
318
318
|
|