teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

参考情報

2020/04/29 13:39

投稿

think49
think49

スコア18194

answer CHANGED
@@ -52,4 +52,9 @@
52
52
  console.log(JSON.stringify([...m])); // [[0,0],[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9]]
53
53
  ```
54
54
 
55
+ 以下、参考情報。
56
+
57
+ - [プロパティアクセサー - JavaScript | MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Property_Accessors)
58
+ - [Map.prototype.set() - JavaScript | MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Map/set)
59
+
55
60
  Re: hase_ さん

2

代替案 -> keyを動的指定する

2020/04/29 13:39

投稿

think49
think49

スコア18194

answer CHANGED
@@ -26,7 +26,7 @@
26
26
  </script>
27
27
  ```
28
28
 
29
- ### 代替案
29
+ ### keyを動的指定する
30
30
 
31
31
  > ```JavaScript
32
32
  > for (var i = 0; i < 10; i++) {
@@ -34,12 +34,22 @@
34
34
  > }
35
35
  > ```
36
36
 
37
- こういう使い方をするなら、
37
+ こういう使い方をするなら、下記のプロパティ(キー)を動的に変更するコードが好ましいと感じます。
38
38
 
39
39
  - オブジェクト
40
40
  - 配列
41
- - `new Map`
41
+ - new Map
42
42
 
43
+ ```JavaScript
43
- でプロパティを動的に変更するコードが好ましいと感じます。
44
+ var o = {}, a = [], m = new Map;
44
45
 
46
+ for (var i = 0; i < 10; ++i) {
47
+ o[i] = i, a[i] = i, m.set(i, i);
48
+ }
49
+
50
+ console.log(JSON.stringify(o)); // {"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9}
51
+ console.log(JSON.stringify(a)); // [0,1,2,3,4,5,6,7,8,9]
52
+ console.log(JSON.stringify([...m])); // [[0,0],[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9]]
53
+ ```
54
+
45
55
  Re: hase_ さん

1

グローバル変数を追記

2020/04/29 13:08

投稿

think49
think49

スコア18194

answer CHANGED
@@ -10,6 +10,22 @@
10
10
 
11
11
  ただし、evalはStrict Modeでローカル変数を制限不可能になり、`new Function` も関数スコープに限定されます。
12
12
 
13
+ ### グローバル変数
14
+
15
+ グローバル変数は「グローバルオブジェクトのプロパティ」として定義される為、プロパティ名を動的指定することで、グローバル変数を動的生成は可能です。
16
+ が、**グローバル変数は名前衝突のリスクがある**為、お勧めしません。
17
+
18
+ ```HTML
19
+ <script>
20
+ 'use strict';
21
+ this.a = 1;
22
+ this.b = 2;
23
+ this.c = 3;
24
+
25
+ console.log(a, b, c); // 1 2 3
26
+ </script>
27
+ ```
28
+
13
29
  ### 代替案
14
30
 
15
31
  > ```JavaScript