回答編集履歴

2

Map, evalに言及

2016/10/18 09:03

投稿

think49
think49

スコア18164

test CHANGED
@@ -1,3 +1,7 @@
1
+ ### 例示のコード
2
+
3
+
4
+
1
5
  > ```JavaScript
2
6
 
3
7
  > var attack= 200;
@@ -6,7 +10,7 @@
6
10
 
7
11
  > var hp = 500;
8
12
 
9
- >
13
+ >
10
14
 
11
15
  > function func (val) {
12
16
 
@@ -26,7 +30,15 @@
26
30
 
27
31
  ご掲示のコードはすべて期待通りに動作します。
28
32
 
33
+
34
+
35
+ ### オブジェクトのプロパティ
36
+
37
+
38
+
29
39
  変数名を文字列で指定する場合なら、対象をオブジェクトのプロパティにするのが良いと思います。
40
+
41
+ (オブジェクトのプロパティになっていれば、どんな形でプロパティを持ってもかまいません。)
30
42
 
31
43
 
32
44
 
@@ -34,8 +46,58 @@
34
46
 
35
47
  var creature = {attack: 200, defence: 100, hp: 500};
36
48
 
49
+ console.log(creature['attack']); // 200
50
+
51
+ console.log(creature['defence']); // 100
52
+
53
+ console.log(creature['hp']); // 500
54
+
37
55
  ```
38
56
 
39
57
 
40
58
 
59
+ また、下記スレッドでも同様の質問があるので参考にしてみてください。
60
+
61
+
62
+
63
+ - [JavaScript - javascriptで関数の動的呼び出し(48709)|teratail](https://teratail.com/questions/48709)
64
+
65
+
66
+
67
+ ### Map (ES6)
68
+
69
+
70
+
71
+ ES6 の `Map` も「オブジェクトのプロパティ」と同様の実装が出来ます。
72
+
73
+
74
+
75
+ ```JavaScript
76
+
77
+ 'use strict';
78
+
79
+ var map = new Map([['attack', 200], ['defence', 100], ['hp', 500]]);
80
+
81
+ console.log(map.get('attack')); // 200
82
+
83
+ console.log(map.get('defence')); // 100
84
+
85
+ console.log(map.get('hp')); // 500
86
+
87
+ ```
88
+
89
+
90
+
91
+ ### eval is evil
92
+
93
+
94
+
95
+ `eval` はローカル変数を文字列で参照する為の手段となりえますが、扱いが難しいので基本的にはお勧めしません。
96
+
97
+
98
+
99
+ - [JavaScript - eval(47779)|teratail](https://teratail.com/questions/47779)
100
+
101
+
102
+
41
103
  Re: churabou さん

1

オブジェクト初期化子のコード追記

2016/10/18 09:03

投稿

think49
think49

スコア18164

test CHANGED
@@ -30,4 +30,12 @@
30
30
 
31
31
 
32
32
 
33
+ ```JavaScript
34
+
35
+ var creature = {attack: 200, defence: 100, hp: 500};
36
+
37
+ ```
38
+
39
+
40
+
33
41
  Re: churabou さん