回答編集履歴

3

参考情報

2020/04/29 13:39

投稿

think49
think49

スコア18164

test CHANGED
@@ -106,4 +106,14 @@
106
106
 
107
107
 
108
108
 
109
+ 以下、参考情報。
110
+
111
+
112
+
113
+ - [プロパティアクセサー - JavaScript | MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Property_Accessors)
114
+
115
+ - [Map.prototype.set() - JavaScript | MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Map/set)
116
+
117
+
118
+
109
119
  Re: hase_ さん

2

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

2020/04/29 13:39

投稿

think49
think49

スコア18164

test CHANGED
@@ -54,7 +54,7 @@
54
54
 
55
55
 
56
56
 
57
- ### 代替案
57
+ ### keyを動的指定する
58
58
 
59
59
 
60
60
 
@@ -70,7 +70,7 @@
70
70
 
71
71
 
72
72
 
73
- こういう使い方をするなら、
73
+ こういう使い方をするなら、下記のプロパティ(キー)を動的に変更するコードが好ましいと感じます。
74
74
 
75
75
 
76
76
 
@@ -78,11 +78,31 @@
78
78
 
79
79
  - 配列
80
80
 
81
- - `new Map`
81
+ - new Map
82
82
 
83
83
 
84
84
 
85
+ ```JavaScript
86
+
85
- でプロパティを動的に変更するコードが好ましいと感じます。
87
+ var o = {}, a = [], m = new Map;
88
+
89
+
90
+
91
+ for (var i = 0; i < 10; ++i) {
92
+
93
+ o[i] = i, a[i] = i, m.set(i, i);
94
+
95
+ }
96
+
97
+
98
+
99
+ 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}
100
+
101
+ console.log(JSON.stringify(a)); // [0,1,2,3,4,5,6,7,8,9]
102
+
103
+ 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]]
104
+
105
+ ```
86
106
 
87
107
 
88
108
 

1

グローバル変数を追記

2020/04/29 13:08

投稿

think49
think49

スコア18164

test CHANGED
@@ -19,6 +19,38 @@
19
19
 
20
20
 
21
21
  ただし、evalはStrict Modeでローカル変数を制限不可能になり、`new Function` も関数スコープに限定されます。
22
+
23
+
24
+
25
+ ### グローバル変数
26
+
27
+
28
+
29
+ グローバル変数は「グローバルオブジェクトのプロパティ」として定義される為、プロパティ名を動的指定することで、グローバル変数を動的生成は可能です。
30
+
31
+ が、**グローバル変数は名前衝突のリスクがある**為、お勧めしません。
32
+
33
+
34
+
35
+ ```HTML
36
+
37
+ <script>
38
+
39
+ 'use strict';
40
+
41
+ this.a = 1;
42
+
43
+ this.b = 2;
44
+
45
+ this.c = 3;
46
+
47
+
48
+
49
+ console.log(a, b, c); // 1 2 3
50
+
51
+ </script>
52
+
53
+ ```
22
54
 
23
55
 
24
56