回答編集履歴

3

コメントへの解説追記

2019/09/21 03:11

投稿

hatena19
hatena19

スコア33729

test CHANGED
@@ -33,3 +33,27 @@
33
33
  console.log(a[prop]);
34
34
 
35
35
  ```
36
+
37
+ コメントへの解説
38
+
39
+ ---
40
+
41
+ > eval('console.log(a.'+prop+')');について、まず「(a.'+prop+')→(a.+prop+)」と置きかわり、「console.log(a.+prop+)」として実行される、というわけではないですよね?
42
+
43
+
44
+
45
+ **というわけではないです!**
46
+
47
+
48
+
49
+ `'console.log(a.'+prop+')'` の prop の中身は`'hoge'`ですので、
50
+
51
+ `'console.log(a.' + 'hoge' + ')'` ということです。
52
+
53
+ `+`演算子は文字列の場合、連結ですので、各文字列が連結されて、
54
+
55
+ `'console.log(a.hoge)'`という文字列になります。
56
+
57
+
58
+
59
+ この文字列を、EVal関数でスクリプトとして解釈して実行してます。

2

誤字修正

2019/09/21 03:11

投稿

hatena19
hatena19

スコア33729

test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
 
16
16
 
17
- プロパティへのアクセスは `a.hoge` という方法以外に、`a['hoge']` という記述があります。
17
+ プロパティへのアクセスは `a.hoge` という方法以外に、`a['hoge']` という記述があります。
18
18
 
19
19
  こちらだと**プロパティを文字列で指定**できます。当然、文字列変数を渡してもOKです。
20
20
 

1

書式の改善

2019/09/20 21:58

投稿

hatena19
hatena19

スコア33729

test CHANGED
@@ -1,4 +1,4 @@
1
- eval関数は、文字列をコードとして解釈して実行します。
1
+ **eval関数**は、**文字列をコードとして解釈**して実行します。
2
2
 
3
3
 
4
4
 
@@ -10,13 +10,13 @@
10
10
 
11
11
 
12
12
 
13
- `a.'+prop+'` はaオブジェクトのあとに文字列が付いているだけですの、コードとして構文エラーになります。
13
+ `a.'+prop+'` は**aオブジェクトのあとに文字列が付いている**だけですの、コードとして構文エラーになります。
14
14
 
15
15
 
16
16
 
17
17
  プロパティへのアクセスは `a.hoge` という方法以外に、`a['hoge']` という記述方があります。
18
18
 
19
- こちらだとプロパティを文字列で指定できます。当然、文字列変数を渡してもOKです。
19
+ こちらだと**プロパティを文字列で指定**できます。当然、文字列変数を渡してもOKです。
20
20
 
21
21
 
22
22