回答編集履歴

1

ネストする

2018/01/04 03:01

投稿

think49
think49

スコア18156

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 さん