回答編集履歴

2

誤字訂正

2019/03/18 16:30

投稿

NozomuIkuta
NozomuIkuta

スコア1260

test CHANGED
@@ -324,7 +324,7 @@
324
324
 
325
325
  つまり、一言で言えば「変数」「定数」という用語が使用されている文脈が異なります。
326
326
 
327
- 定義上、3つすべてが変数であり、使用上、2つが変数で1つが定数です。
327
+ 定義上、3つすべてが変数であり、宣言(宣言するものは)、2つが変数で1つが定数です。
328
328
 
329
329
 
330
330
 

1

追記

2019/03/18 16:30

投稿

NozomuIkuta
NozomuIkuta

スコア1260

test CHANGED
@@ -269,3 +269,67 @@
269
269
 
270
270
 
271
271
  補足(1):テンプレートリテラルは、ブラウザにより対応状況が異なります。
272
+
273
+
274
+
275
+ ---
276
+
277
+
278
+
279
+ ## 追記(2019/3/19)
280
+
281
+
282
+
283
+ think49さん
284
+
285
+
286
+
287
+ `const`まわりは訳語や用途によって意味がややこしいのですが、自分の理解している限り以下の通りです。
288
+
289
+
290
+
291
+ Variable(変数) の定義([MDNより引用](https://developer.mozilla.org/en-US/docs/Glossary/Variable))
292
+
293
+
294
+
295
+ > A variable is a named location for storing a value.
296
+
297
+
298
+
299
+ -> `var`, `let`, `const`のすべてがvariable(変数)
300
+
301
+
302
+
303
+ Declarations(宣言)の定義([MDNより引用](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_types#Declarations))
304
+
305
+
306
+
307
+ > var
308
+
309
+ > Declares a variable, ...
310
+
311
+ > let
312
+
313
+ > Declares a ... variable, ...
314
+
315
+ > const
316
+
317
+ > Declares a ... constant.
318
+
319
+
320
+
321
+ -> `var`, `let`はvariable(変数)、`const`は`constant`(定数)
322
+
323
+
324
+
325
+ つまり、一言で言えば「変数」「定数」という用語が使用されている文脈が異なります。
326
+
327
+ 定義上、3つすべてが変数であり、使用上、2つが変数で1つが定数です。
328
+
329
+
330
+
331
+ ただ、think49さんが言う通り、`const`で宣言したものの参照は変更できませんが、参照先の中身(オブジェクトのプロパティなど)は変更可能なので、使用上も一部「変数」的な振る舞いをすると言えるかもしれません。
332
+
333
+
334
+
335
+ `Object.freeze()`や`Object.defineProperty()`でread-onlyなプロパティは作れますが、もはや「宣言」ではないので、、、