回答編集履歴
1
ネストする
test
CHANGED
@@ -1,4 +1,12 @@
|
|
1
|
+
### ブロック文 (BlockStatement)
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
- [13.2 Block - ECMAScript® 2017 Language Specification](http://www.ecma-international.org/ecma-262/8.0/#sec-block)
|
6
|
+
|
7
|
+
|
8
|
+
|
1
|
-
JavaScript では「ブロック」と呼ばれる構文で Statement の一種です。
|
9
|
+
JavaScript では `{}` は「ブロック」と呼ばれる構文で Statement の一種です。
|
2
10
|
|
3
11
|
if 文や for 文など、他の Statement の一部で Statement が要求される場所に使われることが多いですが、for 文の一部と受け取られがちで認知度が低いかもしれませんね。
|
4
12
|
|
@@ -6,4 +14,64 @@
|
|
6
14
|
|
7
15
|
|
8
16
|
|
17
|
+
### ネストする
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
> ブロック文の中に文を入れることを「ネストする」というのは不適切でしょうか?
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
「**同じ構文を入れ子にする**」ことをネストすると表現します。
|
26
|
+
|
27
|
+
「ブロック文」と「文」は同じ構文ではないので、ネストとは表現しません。
|
28
|
+
|
29
|
+
ブロック文の中にブロック文が入れば、**ブロック文をネストしている**と表現して差し支えありませんが、
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
```JavaScript
|
34
|
+
|
35
|
+
if (x === 1) {
|
36
|
+
|
37
|
+
const y = 1;
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
{
|
42
|
+
|
43
|
+
const z = 1;
|
44
|
+
|
45
|
+
}
|
46
|
+
|
47
|
+
}
|
48
|
+
|
49
|
+
```
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
先述の通り、if 文内のブロック文は認知されていないので、この説明で違和感を感じる人が多いかもしれません。
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
- [13.6 The if Statement - ECMAScript® 2017 Language Specification](http://www.ecma-international.org/ecma-262/8.0/#sec-if-statement)
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
> **Syntax**
|
62
|
+
|
63
|
+
>
|
64
|
+
|
65
|
+
> ```plain
|
66
|
+
|
67
|
+
> IfStatement[Yield, Await, Return]:
|
68
|
+
|
69
|
+
> if(Expression[+In, ?Yield, ?Await])Statement[?Yield, ?Await, ?Return]elseStatement[?Yield, ?Await, ?Return]
|
70
|
+
|
71
|
+
> if(Expression[+In, ?Yield, ?Await])Statement[?Yield, ?Await, ?Return]
|
72
|
+
|
73
|
+
> ```
|
74
|
+
|
75
|
+
|
76
|
+
|
9
77
|
Re: GCP さん
|