回答編集履歴

2

3→5

2018/11/05 11:37

投稿

taka-saan
taka-saan

スコア665

test CHANGED
@@ -54,7 +54,7 @@
54
54
 
55
55
 
56
56
 
57
- var getNum = 3;
57
+ var getNum = 5;
58
58
 
59
59
  var setText = 'text' + getNum;
60
60
 

1

追記

2018/11/05 11:37

投稿

taka-saan
taka-saan

スコア665

test CHANGED
@@ -23,3 +23,57 @@
23
23
  実際は、typeofより先に評価されるeval関数の中でエラーが発生してしまい
24
24
 
25
25
  typeof にまで行かないで終わってしまう、ということでしょう。
26
+
27
+
28
+
29
+ ===
30
+
31
+ > 例えば5の値を取得した時、存在しない変数なら処理をしたいと思ったわけです。
32
+
33
+ > eval()を入れないと式が評価されず、変数の確認が出来ないです。
34
+
35
+
36
+
37
+ evalを使わないで済む方法を推奨しますし、具体例はほかの回答者さんのとおりです。
38
+
39
+
40
+
41
+ しかし、万が一、どうしても、文字列から変数の有無を確認をしたいのであれば、
42
+
43
+ 先にtypeofより先にeval単体で検査すればよい、ということが、上記の理屈から分かることと思います。
44
+
45
+
46
+
47
+ ```javascript
48
+
49
+ var text1 = 'hoge1',
50
+
51
+ text2 = 'hoge2',
52
+
53
+ text3 = 'hoge3';
54
+
55
+
56
+
57
+ var getNum = 3;
58
+
59
+ var setText = 'text' + getNum;
60
+
61
+
62
+
63
+ try{
64
+
65
+ eval(setText);
66
+
67
+ }catch(error) {
68
+
69
+ console.log("なし");
70
+
71
+ setText='';
72
+
73
+ }
74
+
75
+
76
+
77
+ console.log(eval(setText));
78
+
79
+ ```