回答編集履歴
1
ネストする
answer
CHANGED
@@ -1,5 +1,39 @@
|
|
1
|
+
### ブロック文 (BlockStatement)
|
2
|
+
|
3
|
+
- [13.2 Block - ECMAScript® 2017 Language Specification](http://www.ecma-international.org/ecma-262/8.0/#sec-block)
|
4
|
+
|
1
|
-
JavaScript では「ブロック」と呼ばれる構文で Statement の一種です。
|
5
|
+
JavaScript では `{}` は「ブロック」と呼ばれる構文で Statement の一種です。
|
2
6
|
if 文や for 文など、他の Statement の一部で Statement が要求される場所に使われることが多いですが、for 文の一部と受け取られがちで認知度が低いかもしれませんね。
|
3
7
|
他に、**Label 文**に使ったり、**ブロックスコープ**を形成する為に使われることがあります。
|
4
8
|
|
9
|
+
### ネストする
|
10
|
+
|
11
|
+
> ブロック文の中に文を入れることを「ネストする」というのは不適切でしょうか?
|
12
|
+
|
13
|
+
「**同じ構文を入れ子にする**」ことをネストすると表現します。
|
14
|
+
「ブロック文」と「文」は同じ構文ではないので、ネストとは表現しません。
|
15
|
+
ブロック文の中にブロック文が入れば、**ブロック文をネストしている**と表現して差し支えありませんが、
|
16
|
+
|
17
|
+
```JavaScript
|
18
|
+
if (x === 1) {
|
19
|
+
const y = 1;
|
20
|
+
|
21
|
+
{
|
22
|
+
const z = 1;
|
23
|
+
}
|
24
|
+
}
|
25
|
+
```
|
26
|
+
|
27
|
+
先述の通り、if 文内のブロック文は認知されていないので、この説明で違和感を感じる人が多いかもしれません。
|
28
|
+
|
29
|
+
- [13.6 The if Statement - ECMAScript® 2017 Language Specification](http://www.ecma-international.org/ecma-262/8.0/#sec-if-statement)
|
30
|
+
|
31
|
+
> **Syntax**
|
32
|
+
>
|
33
|
+
> ```plain
|
34
|
+
> IfStatement[Yield, Await, Return]:
|
35
|
+
> if(Expression[+In, ?Yield, ?Await])Statement[?Yield, ?Await, ?Return]elseStatement[?Yield, ?Await, ?Return]
|
36
|
+
> if(Expression[+In, ?Yield, ?Await])Statement[?Yield, ?Await, ?Return]
|
37
|
+
> ```
|
38
|
+
|
5
39
|
Re: GCP さん
|