回答編集履歴

3

typo修正

2018/07/25 03:40

投稿

think49
think49

スコア18166

test CHANGED
@@ -182,7 +182,7 @@
182
182
 
183
183
 
184
184
 
185
- 下記リンク先が比較的よくまとまっていますが、「関数宣言(文)」と書かれており、せんけと文の違いが明確化されていないようです。
185
+ 下記リンク先が比較的よくまとまっていますが、「関数宣言(文)」と書かれており、宣言と文の違いが明確化されていないようです。
186
186
 
187
187
  https://asciidwango.github.io/js-primer/basic/statement-expression/
188
188
 

2

let 宣言

2018/07/25 03:40

投稿

think49
think49

スコア18166

test CHANGED
@@ -1,4 +1,4 @@
1
- ### カンマ演算子
1
+ ### カンマ演算子 (Comma Operator)
2
2
 
3
3
 
4
4
 
@@ -44,7 +44,7 @@
44
44
 
45
45
 
46
46
 
47
- よくある誤解は `var` 文、`let` 内のカンマを「カンマ演算子」と誤認するパターンで、それはカンマ演算子ではありません。
47
+ よくある誤解は `var` 文、`let` 宣言内のカンマを「カンマ演算子」と誤認するパターンで、それはカンマ演算子ではありません。
48
48
 
49
49
 
50
50
 
@@ -84,4 +84,108 @@
84
84
 
85
85
 
86
86
 
87
+ ### let 宣言
88
+
89
+
90
+
91
+ > 理解力がなく理解しきれていないのですが、「カンマ演算子」は let var などではなく、感までまとめて指定できる。let a = 1, b = 2 , c = 3; は良くなく、forループなどで使う場合のみ使う。ということでしょうか。
92
+
93
+
94
+
95
+ 質問の前段部分に言及しているつもりはありませんでした。
96
+
97
+ let宣言はECMAScriptによって、文法(Syntax)が定義されています。
98
+
99
+ http://www.ecma-international.org/ecma-262/9.0/#sec-let-and-const-declarations
100
+
101
+
102
+
103
+ ```
104
+
105
+ **Syntax**
106
+
107
+ LexicalDeclaration[In, Yield, Await]:
108
+
109
+ LetOrConstBindingList[?In, ?Yield, ?Await];
110
+
111
+
112
+
113
+ LetOrConst:
114
+
115
+ let
116
+
117
+ const
118
+
119
+
120
+
121
+ BindingList[In, Yield, Await]:
122
+
123
+ LexicalBinding[?In, ?Yield, ?Await]
124
+
125
+ BindingList[?In, ?Yield, ?Await],LexicalBinding[?In, ?Yield, ?Await]
126
+
127
+
128
+
129
+ LexicalBinding[In, Yield, Await]:
130
+
131
+ BindingIdentifier[?Yield, ?Await]Initializer[?In, ?Yield, ?Await]opt
132
+
133
+ BindingPattern[?Yield, ?Await]Initializer[?In, ?Yield, ?Await]
134
+
135
+ ```
136
+
137
+
138
+
139
+ 上記によれば、`BindingList` によって、カンマが定義されており、カンマ演算子(Comma Operator)が入る余地はありません。
140
+
141
+ 一方、`Initializer` を追いかけると、`Expression` (式)を経由し、カンマ演算子(Comma Operator)にも行き着きます。
142
+
143
+ http://www.ecma-international.org/ecma-262/9.0/#sec-comma-operator
144
+
145
+
146
+
147
+ 従って、下記コードではカンマ演算子が使われていません(let宣言の文法範囲内)が、
148
+
149
+
150
+
151
+ ```JavaScript
152
+
153
+ let a = 1, b = 2;
154
+
155
+ ```
156
+
157
+
158
+
159
+ 下記コードではカンマ演算子が使われています。
160
+
161
+
162
+
163
+ ```JavaScript
164
+
165
+ let a = (1,2,3);
166
+
167
+ ```
168
+
169
+
170
+
171
+ 文法を読むのは、慣れが必要なので、無理せず、少しずつ読み進めることをお勧めします。
172
+
173
+ 下記3つの要素に分類すると、多少は読みやすくなると思います。
174
+
175
+
176
+
177
+ - 宣言 (Declaration)
178
+
179
+ - 文 (Statement)
180
+
181
+ - 式 (Expression)
182
+
183
+
184
+
185
+ 下記リンク先が比較的よくまとまっていますが、「関数宣言(文)」と書かれており、せんけと文の違いが明確化されていないようです。
186
+
187
+ https://asciidwango.github.io/js-primer/basic/statement-expression/
188
+
189
+
190
+
87
191
  Re: 2001Y さん

1

空白バグ対処

2018/07/25 03:39

投稿

think49
think49

スコア18166

test CHANGED
File without changes